【问题标题】:Can't figure out error on PDO TRY code snipped无法找出 PDO TRY 代码片段上的错误
【发布时间】:2018-06-30 16:18:00
【问题描述】:

下面的代码给了我这个错误

“致命错误:在布尔值上调用成员函数 setFetchMode()”on 第 21 行

这是setFetchMode 的行。

有人知道问题可能是什么吗?我搞不定:(

代码:

 try {
 $query = $dbh->query("SELECT name, city FROM schools WHERE 1 GROUP BY name, 
 city");
 $query->setFetchMode(PDO::FETCH_ASSOC);   //THIS IS LINE 21 error refers to
 $iterator = new IteratorIterator($query);
 foreach ($iterator as $row) {
 if (empty($row['name']) == false && !in_array($row['name'], $name_list))
        $name_list[] = $row['name'];
    if (empty($row['city']) == false && !in_array($row['city'], $city_list))
        $city_list[] = $row['city'];
 }

【问题讨论】:

    标签: php pdo try-catch fetch


    【解决方案1】:

    尝试执行此代码以查看 PDO 中的错误,然后您可以评估要修改的部分

    $sql = "SELECT name, city FROM schools WHERE 1 GROUP BY name, 
    city";
    try {
       $stmt = $dbh->query($sql);
       $result = $stmt->setFetchMode(PDO::FETCH_NUM);
         while ($row = $stmt->fetch()) {
            print $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
         }
     }
     catch (PDOException $e) {
        print $e->getMessage();
      }
    

    如果这段代码失败,它会给你你的错误

    【讨论】:

    • 我使用您的方法遇到了同样的错误(致命错误:在布尔值上调用成员函数 setFetchMode())。它说错误与我的方法在同一行......问题出在这一行: $result = $stmt->setFetchMode(PDO::FETCH_NUM);
    • 也许有一种方法可以用 mysqli 代替 PDO 来编写它?
    • 尝试在准备好的语句中编写它。
    • 刚试过。仍然会出现“布尔值”错误。无论我采取什么方法,我都会收到关于“布尔值”发生的事情的错误。仍然说:致命错误:在布尔值上调用成员函数 bind_param()。为什么这两种方法都不断给出这个布尔错误?数据类型不是布尔值。
    猜你喜欢
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多