我开始使用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";
}
?>
答案 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);