PHP PDO MySQL查询打印空白

时间:2013-02-12 13:56:03

标签: php mysql pdo

浏览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循环行。

3 个答案:

答案 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文件中,以使设置成为永久性