【问题标题】:php pdo statement errorphp pdo 语句错误
【发布时间】:2014-01-08 04:55:46
【问题描述】:

我是 php pdo 的新手。在这里,我正在尝试使用准备好的语句从数据库中获取我的数据库记录。但它没有获取记录。我收到以下错误

致命错误:带有消息的未捕获异常“PDOException” 'SQLSTATE[3D000]: 目录名无效:1046 未选择数据库

为什么我会收到这个错误?为什么它没有从数据库中获取记录?

<?php
$user = "root";
$password = "password";

    try {
        $conn = new PDO('mysql:host=localhost;database=evouchers', $user, $password);
        $conn -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    } catch(PDOException $e){
        echo 'DATABASE ERROR : ' . $e->getMessage();
    }

    $sql = "SELECT UserName FROM ebusers ORDER BY UserName";
    $db = $conn->query($sql);
    $db->setFetchMode(PDO::FETCH_ASSOC);

    while($row = $db->fetch())
    {
        print_r($row);
    }
?>

【问题讨论】:

    标签: php pdo


    【解决方案1】:

    在你的数据库连接字符串而不是数据库中使用 dbname

      $conn = new PDO('mysql:host=localhost;database=evouchers', $user, $password);
      ---------------------------------------^
    
    
    
     $conn = new PDO('mysql:host=localhost;dbname=evouchers', $user, $password);
    

    文档链接:http://php.net/manual/en/pdo.connections.php

    【讨论】:

    • 谢谢..它的工作..为什么我们应该在那个地方使用 dbname?
    • 每个数据库系统都有些不同。 Mysql 恰好使用了 dbname。
    • PDO 要求使用 dbname 来指定数据库名,您可以在文档链接中看到。
    • 现在我得到这样的结果 Array ( [UserName] => Administrator ) Array ( [UserName] => Mr.Dependable )。如果我想获取管理员,Mr.Dependable 值意味着我应该怎么做?
    • 像 echo $row['UserName'];你会得到价值。如果有任何问题,请告诉我。
    【解决方案2】:

    我觉得应该是

    $conn = new PDO('mysql:host=localhost;dbname=evouchers', $user, $password);
    

    或者在你初始化 PDO 之后尝试

    $conn->exec('USE evouchers;');
    

    【讨论】:

      【解决方案3】:

      使用以下行进行 pdo 连接

       $conn = new PDO('mysql:host=localhost;dbname=evouchers', $user, $password);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-12
        • 2014-01-12
        • 1970-01-01
        • 1970-01-01
        • 2012-03-27
        • 2011-09-21
        • 1970-01-01
        相关资源
        最近更新 更多