浏览PHP MySQL教程并将PHP切换为PDO;无论如何,我的查询都是空白的。
$get_cat = $that->dbh->query("SELECT `cat_name`, `cat_desc` FROM `categories`");
if(isset($get_cat))
{
while($row = $get_cat->fetch(PDO::FETCH_ASSOC))
{
printf("
<tr>
<td>".$row['cat_name']." : ".$row['cat_desc']."</td>
</tr>
");
}
}
else
{
echo '<tr><td>return is false</td></tr>';
}
$指的是:
include('db.php');
$that = new lib();
OLD: 那么,为什么我的查询是空白的?在将模具放入其中之前会返回布尔值并在循环中给出错误,其中的模具只是空白。类别表中包含数据,并且在提交新条目时刷新页面。 新: 致命错误:在第36行的C:\ wamp \ www \ forum \ create_category.php中的非对象上调用成员函数fetch()
第36行是while循环行。
答案 0 :(得分:3)
mysql_fetch_array
不是PDO。你需要这样的东西:
while($row = $get_cat->fetch(PDO::FETCH_ASSOC))
获取你的行。
您也不能使用mysql_error()
来获取错误。您可以使用例如$that->dbh->errorInfo()
,但您应该查看异常,以便更好地捕获所有错误。
修改:您应该检查错误是什么。使用isset
是没有意义的,因为您刚刚为其分配了值,因此它将始终设置。
答案 1 :(得分:1)
您的查询不正确 - 这是您要做的吗?
SELECT `categories`.`cat_name`, `categories`.`cat_desc` FROM `categories`
很难知道没有看到你的桌子结构。
答案 2 :(得分:1)
你需要告诉PDO抛出错误。
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$res = $that->dbh->query("SELECT cat_name, cat_desc FROM categories");
while($row = $res->fetch())
{
echo "<tr><td>$row[cat_name] : $row[cat_desc]</td></tr>\n";
}
运行您的代码,阅读错误消息并采取适当的措施
不要忘记将第一行添加到db.php文件中,以使设置成为永久性