Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde galera! Estou tendo um problema esquisito aqui. Sou iniciante e não faço a mínima ideia do que pode ser. Veja só, no campo dropdown abaixo coloquei no "value" o ID, mas ele salva no banco como tipo STRING e não INT.
<?php
$sql = "SELECT id, sigla FROM local ORDER BY sigla ASC". $result = $conn->query($sql).?>...
<select name="local" class="form-control"> <option selected>Selecione...</option> <?php while($row = $result->fetch_assoc()){ echo "<option value=".$row['id'].">".$row['sigla']."</option>". }?>
</select>... Dei um var_dump() pra saber o que apareceria e ele mostra como STRING. <pre>
<?php
$sql = "SELECT id, sigla FROM local ORDER BY sigla ASC". $result = $conn->query($sql). $row = $result->fetch_assoc(). var_dump($row['id']).?>
</pre> Resultado: string(1) "5" Esse é o Banco de dados: Coloquei a coluna ID como INT. -- phpMyAdmin SQL DumpSET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO". SET AUTOCOMMIT = 0. START TRANSACTION. SET time_zone = "+00:00". /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */. /*!40101 SET NAMES utf8mb4 */. --arqlocalCREATE TABLE `local` ( `id` int(11) NOT NULL, `SIGLA` mediumtext NOT NULL, `LOCAL` mediumtext NOT NULL, `TELEFONE` mediumtext NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8. --locallocal (id, SIGLA, LOCAL, TELEFONE) VALUESlocalALTER TABLE `local` ADD PRIMARY KEY (`id`). --localALTER TABLE `local` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6. COMMIT. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */. /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */. /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */. Obrigada pessoal!@Flaviaac
Experimente substituir o comando VAR_DUMP por GETTYPE do PHP.
Se o conteudo da coluna no seu Banco de Dados for um número, então ele deve exibir INTEGER, se for do tipo STRING vai aparecer STRING mesmo, porém é certo de que você está incluindo um INTEIRO e não uma STRING no Banco de Dados, pois caso você tente colocar um alphanumérico no campo INT você irá receber um erro impedindo que o valor seja incluido na tabela.
DE:
var_dump($row['id']);
***PARA:***
echo gettype($row['id'];
Uma perguntinha, o que isso está te causando de problema?
Espero ter ajudado.
Att.
***Felipe Coutinho***
Não entendi qual o problema.
Está gerando algum erro?
O PHP tem conversão automática de tipos, uma vez que você precise fazer algum cálculo com este id, você pode realizar tranquilamente que a conversão automática faz o trabalho.
Fonte:
https://www.php.net/manual/pt_BR/language.types.type-juggling.php
Uma fonte interessante pra compreender melhor a tipagem do PHP:
https://pt.stackoverflow.com/questions/76831/criando-um-conjunto-de-variaveis-no-php