2013-05-14 153 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

相關問題