为什么我的PDO不工作?

时间:2012-05-17 17:36:21

标签: php mysql pdo

我开始使用PDO并使用PDO成功连接到MySQL。但是,当我尝试从我的数据库中选择东西时,没有任何反应。什么都没有回应。 (即使我在该表中有记录,并且列用户名存在)我的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 个答案:

答案 0 :(得分: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:(您最初的语法)。

答案 1 :(得分: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 />';
}
?>

答案 2 :(得分:0)

为什么不问PHP?

catch(Exception $e)
{
    die($e);
}

答案 3 :(得分:0)

看起来您的表中没有数据或有错误:

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

$arr = $sth->errorInfo();
print_r($arr);