php pdo¿我在做什么错?

问题描述:

我在学习php pdo;我的环境是:NetBeans 6.5.1,XAMPP 1.7.0和我有这个代码,它似乎连接。php pdo¿我在做什么错?

  • 如果我改变DBNAME到一个不存在的一个,它会引发异常“分贝不存在”
  • 如果我更改用户,它提出了“登录不正确”)

但是当我调用$ CN->查询,它提出:发生在apache.exe

的未处理的win32异常我做错了什么?

$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(); 
} 

这是XAMPP 1.7.0中的一个错误。升级至1.7.1或按照these instructions修复您的1.7.0安装。

是$ cn有效吗?检查返回值。到目前为止,你所描述的并不能说服你连接。

+0

在NetBeans调试手表中说它是对象,我还应该检查什么? – 2009-05-04 15:38:15

如果你还没有,我会确保你的环境正常工作。

  1. 检查以确保用户使用MySQL本身(使用类似mysqlquery的东西)。
  2. 检查以确保php可以连接到MySQL。我在所有新设置上安装phpmyadmin(即使我不保留它)以确保我有良好的工作连接。
  3. 让PDO通过错误例外(请参阅http://us2.php.net/manual/en/pdo.error-handling.php)查看错误发生的位置。

我的猜测是,你没有连接到MySQL,这将解释无法更改数据库。