2

我开始使用 PDO,并使用 PDO 成功连接到 MySQL。但是,当我尝试从我的数据库中选择内容时,什么也没有发生。没有任何回应。(即使我在该表中有记录,并且列 username 存在)我的 PHP 日志中没有错误。

我正在使用 MAMP 并且所有 PDO 组件似乎都在 phpinfo() 中工作(因为我首先能够连接到 db)

请让我知道可能出了什么问题。非常感谢

    <?php
    try 
    {
        $connection = new PDO('mysql:host=localhost;dbname:my_db','my_username',
                              'xxxxxxx');   


            $stmt=$connection->prepare("SELECT * FROM users");
            $stmt->execute();

            while ($row=$stmt->fetch(PDO::FETCH_OBJ)){

                echo $row->username;
            }

    }

    catch(Exception $e)
    {
        echo "There was an error connecting to the database";
    }

    ?>
4

4 回答 4

9

您需要告诉 PDO 您希望它抛出异常:

$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

根据您在下面的评论,很明显您的 DSN 不正确。它应该是:

$connection = new PDO('mysql:host=localhost;dbname=my_db','my_username','xxxxxxx');

请注意,语法是dbname=而不是dbname:(您最初拥有的)。

于 2012-05-17T17:40:05.967 回答
3

首先,从您的 PDO 连接段中获取您的查询...

<?php
try 
{
    $connection = new PDO('mysql:host=localhost;dbname:my_db','my_username',
                          'xxxxxxx');
}

catch(Exception $e)
{
    echo "There was an error connecting to the database";
}
?>

然后,去做。

<?php
$SQL = 'SELECT * FROM users';
foreach($connection->query($SQL) as $row){
    print $row['username'] . "\n".'<br />';
}
?>
于 2012-05-17T17:45:53.033 回答
0

看起来您要么在该表中没有数据,要么有错误:

尝试在之后添加此代码$stmt->execute();

$arr = $sth->errorInfo();
print_r($arr);
于 2012-05-17T17:44:21.833 回答
0

为什么不问PHP?

catch(Exception $e)
{
    die($e);
}
于 2012-05-17T17:39:24.267 回答