php pdo ¿O que estou fazendo de errado?
Pergunta
Estou aprendendo php DOP; meu ambiente é:. NetBeans 6.5.1, XAMPP 1.7.0 e eu tenho esse código, que parece ligar
- Se eu mudar dbname para um inexistente, levanta exceção "db não existe"
- Se o usuário I mudança, ele levanta "login incorreto")
mas quando eu chamar $ CN-> consulta, ele levanta:
Uma Exceção não tratada Win32 ocorreu em apache.exe
O que estou fazendo de errado?
$hostname = 'localhost';
$username = 'crb';
$password = 'letmein';
try {
$cn = new PDO("mysql:host=$hostname;dbname=bitacora", $username, $password);
echo 'Connected to database<br />';
$sql = "SELECT * FROM usuario WHERE login = '".$login."' AND clave = '".$clave."'";
// Error here
foreach ($cn->query($sql) as $row) {
print $row['login'] .' - '. $row['clave'] . '<br />';
}
} catch (PDOException $e) {
echo $e->getMessage();
} catch (Exception $e) {
echo $e->getMessage();
}
Solução
Este é um bug no XAMPP 1.7.0. Upgrade para 1.7.1 ou follow estas instruções para corrigir sua instalação 1.7.0.
Outras dicas
É de R $ cn válido? Verifique o valor de retorno. O que você descreveu até agora não me convencer de que você está conectado.
Se você não tiver, eu ia fazer certo se o seu ambiente estava funcionando.
- Certifique-se das obras do usuário com a própria MySQL (usando algo como mysqlquery).
- Certifique-se de php pode se conectar a MySQL. Eu instalar phpmyadmin em todas as novas configurações (mesmo se eu não deixá-lo no lugar) para se certificar de que eu tenho uma boa conexão funcionando.
- Tem DOP através de exceções em erros (ver http: // us2 .php.net / manual / en / pdo.error-handling.php ) para ver onde os erros estão ocorrendo imediatamente.
Meu palpite é que você não está sempre se conectar a MySQL, o que explicaria a incapacidade de mudar o banco de dados.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow