2013-05-14 149 views
-1

我有下面的代码,我无法弄清楚,为什么PDO语句错误发生时,这里是我的代码为什么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; 
    } 

当我运行

Fatal error: Call to undefined method PDOStatement::fetch_assoc()

任何帮助,我得到这个错误?

+0

请查阅http://php.net/manual/en/pdostatement.fetch.php – 2013-05-14 02:06:53

回答

2

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

你想

$row_id->fetch(PDO::FETCH_ASSOC) 

fetch()是正确的方法名称和您通过PDO Constants它的一个来确定得到什么类型的变量回来。

+0

谢谢。这有所帮助。但是,我遇到了我在手册中使用过的上述内容。 http://www.php.net/manual/en/mysqli-result.fetch-array.php。 – 2013-05-14 04:06:15

+0

谢谢。这有所帮助。但是,我遇到了我在手册中使用过的上述内容。 http://www.php.net/manual/en/mysqli-result.fetch-array.php。在上面的代码中,返回$ row_id不返回任何东西,这是因为它在获取期间被消耗了吗? – 2013-05-14 04:17:45

+0

是的。如果你返回'$ row_id',它现在只是一个空的语句句柄。如果有另一行,它会返回可以从中获取的另一个对象。你可能想要返回'$ idrow'。 – Cfreak 2013-05-14 14:02:18

相关问题