2013-02-02 28 views
-3

現在一直在掙扎幾個小時。任何人都可以指出我要出錯的地方嗎?執行rowCount和第二個foreach循環時出現兩個PDO錯誤

第一個錯誤我得到的是:

Fatal error: Call to undefined method PDO::rowCount() in 
pm_wall.php on line 8 
Call Stack: 0.0000 643680 1. {main}() 
index.php:0 0.0015 662904 2. 
include('pm_wall.php') 
index.php:117 

第二個錯誤我得到的是:

Warning: Invalid argument supplied for foreach() in pm_wall.php on line 19 

Call Stack: 
    0.0000  643296 1. {main}() index.php:0 
    0.0015  649864 2. include(index.php:117 

如何去解決呢?下面是我的代碼如下:

$sql = "SELECT * from pm_msg"; 
$result = $pdo->query($sql); 
if($pdo->rowCount() > 0 && !empty($result)) // first error occurs here 
{ 
    foreach ($result as $row) 
    { 
     $user_id = $row['user_id']; 
     echo '<div id="content"> 
        <div class="stbody"> 
        <div class="stimg">'; 

     // set profile picture 

     $sql = "SELECT img FROM pm_user WHERE id=$user_id"; 
     $result = $pdo->query($sql); 
     foreach ($result as $row) // second error occurs here 
     { 
      echo $row['img']; 
     } 

     echo '<div id="stexpandbox"><div></div>';  
     echo '</div></div></div></div>'; 
    } 
} 
else 
    { 
     echo 'Wanna be starting soemthing?'; 
    } 
+1

Ääämm..你昨天看過我[回覆](http://stackoverflow.com/a/14656991/171318)嗎?你爲什麼不檢查返回值?瘋!!!! – hek2mgl

+0

@ hek2mgl它是我第一次使用PDO道歉 - 通過試驗和錯誤學習,其證明相當具有挑戰性 – methuselah

+1

這與PDO無關。它是一個通用編程基礎。 !!!檢查你的返回值! – hek2mgl

回答

2

事情是這樣的,也許:

$sql = "SELECT * from pm_msg"; 
$result = $pdo->query($sql); 
if($result->rowCount() > 0 && !empty($result)) // first error occurs here 
{ 
    while($row = $result->fetch(PDO::FETCH_ASSOC)) 

花一點時間(兩天),並閱讀有關PDO及其對php.net使用過。

2

rowCount()必須在您的PDO語句上調用,而不是在您的PDO實例上!

$ result-> rowCount();讀數誤差可以幫助...

0

使用此選項在PDO讓受影響的和匹配的行:

PDO::MYSQL_ATTR_FOUND_ROWS => TRUE 

如果沒有找到該行的實例,同時更新 - 這將返回0。希望這有助於。