0

阅读 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 循环行。

4

3 回答 3

3

mysql_fetch_array不是 PDO。你需要类似的东西:

while($row = $get_cat->fetch(PDO::FETCH_ASSOC))

得到你的行。

你也不能mysql_error()用来得到错误。例如,您可以使用,$that->dbh->errorInfo()但您应该研究异常,以获得更强大的方法来捕获所有错误。

编辑:您应该检查错误是什么。使用isset是没有意义的,因为您刚刚为它分配了一个值,所以它总是会被设置。

于 2013-02-12T13:59:15.317 回答
1

您的查询不正确-这是您要执行的操作吗?

SELECT `categories`.`cat_name`, `categories`.`cat_desc` FROM `categories`

不看表结构就很难知道。

于 2013-02-12T13:59:54.410 回答
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 文件中,以使设置永久化

于 2013-02-12T14:41:36.710 回答