【问题标题】:php pdo ¿What am I doing wrong?php pdo ¿我做错了什么?
【发布时间】:2010-10-23 15:54:54
【问题描述】:

我正在学习 php pdo;我的环境是:NetBeans 6.5.1,XAMPP 1.7.0,我有这段代码,它似乎可以连接。

  • 如果我将 dbname 更改为不存在的,则会引发异常“db not exists”
  • 如果我更改用户,它会引发“登录错误”)

但是当我调用 $cn->query 时,它会引发:

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

【问题讨论】:

    标签: php pdo xampp


    【解决方案1】:

    $cn 有效吗?检查返回值。到目前为止,您所描述的内容并不能使我相信您已建立联系。

    【讨论】:

    • 在 NetBeans 调试手表中说它是对象,我还应该检查什么?
    • 你处理异常吗? catch(PDOException $e) {echo $e->getMessage();}
    • 是的,它不会引发异常,也不会创建连接,也不会做cn->查询它会引发apache错误
    【解决方案2】:

    这是 XAMPP 1.7.0 中的一个错误。升级到 1.7.1 或关注 these instructions 修复您的 1.7.0 安装。

    【讨论】:

      【解决方案3】:

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

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

      我的猜测是您从未连接到 MySQL,这可以解释无法更改数据库的原因。

      【讨论】:

        猜你喜欢
        • 2011-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-01
        • 1970-01-01
        • 2015-10-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多