为什么PDO语句错误出现在此代码中?

时间:2013-05-14 02:03:18

标签: php sql pdo fetch associative-array

我有以下代码,我无法弄清楚PDO语句出错的原因,这是我的代码

try {
        $db = new PDO("mysql:dbname=imdb","username","pwd");
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $first_name=$db->quote($first_name);
        $last_name=$db->quote($last_name);
        $row_id=$db->query("SELECT id FROM actors WHERE last_name=$last_name AND first_name LIKE ${first_name} ORDER BY film_count DESC LIMIT 1");
        if ($row_id->rowCount() > 0) {
            $idrow=$row_id->fetch_assoc();
                print_r($idrow);
            return $row_id;
        }
        else {
            return Null;
        }
    }
    catch (PDOException $ex) {
    ?>
        <p>Sorry, a database error occurred. Please try again later.</p> 
        <p>(Error details: <?= $ex->getMessage() ?>)</p>
    <?php
        return NULL;
    }

我跑

时出现此错误
  

致命错误:调用未定义的方法PDOStatement :: fetch_assoc()

任何帮助?

1 个答案:

答案 0 :(得分:2)

因为就像错误所说的那样。 fetch_assoc()未定义。

你想要

$row_id->fetch(PDO::FETCH_ASSOC)

fetch()是正确的方法名称,您将其传递给PDO Constants之一以确定要返回的变量类型。