【发布时间】:2012-10-21 12:17:00
【问题描述】:
我正在学习 PDO,我很困惑,我在下面有这段代码,对我来说一切正常,但是我收到了这个错误代码,我不知道我必须做些什么来修复它,请帮帮我:
<?php
$hostname='localhost';
$username='root';
$password='';
try {
$dbh = new PDO("mysql:host=$hostname;dbname=stickercollections",$username,$password);
echo 'Connected to Database<br/>';
$sql = "SELECT * FROM stickercollections";
foreach ($dbh->query($sql) as $row)
{
echo $row["collection_brand"] ." - ". $row["collection_year"] ."<br/>";
}
$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
错误代码
Invalid argument supplied for foreach() in /Applications/XAMPP/xamppfiles/htdocs/GOTSWAPMAIN/index.php on line 11
【问题讨论】:
-
var_dump($dbh->query($sql))--- 始终检查变量内部的内容以及返回的表达式而不是猜测 -
正如 zerkms 所暗示的,查询似乎失败,因此返回 false 而不是可迭代的 PDOStatement。看起来您正在尝试使用带有异常的 PDO。如果连接被配置为使用异常,您将不会收到此无效参数错误,因为会引发异常(因此永远不会执行 foreach)。你必须告诉连接抛出异常,要么查看 PDO::__construct 的第四个参数,要么通过
$dbh->setAttribute。