2015-07-20 82 views
0

Iam將我的舊代碼(以多種方式進行調優)帶入帶有PDO的新標準。 問題是,我沒有得到任何回報,沒有錯誤信息,沒有任何東西。 我的代碼的作用如下:對數據庫進行查詢,如果有任何結果($ resultado),它會在數組中創建數據的順序。 可以請別人給我一個幫助嗎? 我嘗試了數組的方式和對象的方法,沒有甜甜圈:/如何從舊的查詢PHP到使用PDO準備好的語句進行查詢PHP

舊代碼:

$sql_code = 
    "SELECT news_id, news_title, news_date, news_resume 
    FROM news 
    WHERE news_show = 'S' 
    ORDER BY news_date DESC 
    "; 

    $result = mysql_query($sql_code); 

    if ($result) { 
    $rows = mysql_num_rows($result); 
     for ($i=0; $i<$rows; $i++) { 
     $aID[]  = mysql_result($result, $i, "news_id"); 
     $aTitle[] = mysql_result($result, $i, "news_title"); 
     $aDate[] = mysql_result($result, $i, "news_date"); 
     $aResume[] = mysql_result($result, $i, "news_resume"); 
     } 
    } 
?> 

新的代碼,不工作:

try 
     { 
      $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpasswd); 
      $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      $stmt = $dbh->prepare("SELECT news_id, news_title, news_date, news_resume 
            FROM  news 
            WHERE news_show = :newsS 
            ORDER BY news_date DESC"); 

      $stmt->execute(array('newsS' => 'S')); 

      while ($sql_code = $stmt->fetchall(PDO::FETCH_ASSOC)) 
      { 
       $result = mysql_query($sql_code); 
      } 

     } 
     catch(PDOException $e) 
     { 
      echo "Error:". $e->getMessage(); 
     } 

    $result = mysql_query($sql_code); 

    if ($result) 
    { 
    $rows = mysql_num_rows($result); 
     for ($i=0; $i<$rows; $i++) 
     { 
     $aID[]  = mysql_result($result, $i, "news_id"); 
     $aTitle[] = mysql_result($result, $i, "news_title"); 
     $aDate[] = mysql_result($result, $i, "news_date"); 
     $aResume[] = mysql_result($result, $i, "news_resume"); 
     } 
    } 
?> 
+2

簡單:你在混合MySQL API。你不能這樣做。使用連接中的同一個查詢。沒有灰色地帶。儘管你可以喝朗姆酒和可樂。 –

+1

我爲up/title – Drew

+0

加上'fetchall'應該有一個大寫A.現在誰有球提交答案?編輯:*你怎麼樣山姆?* - @JayBlanchard - grin –

回答

0

如果你使用的PDO,你不要調用任何mysql_XXX函數,您必須對所有內容使用PDO方法。

$stmt->fetchAll()返回結果的所有行。要處理它,只需使用foreach循環。

try 
{ 
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpasswd); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $dbh->prepare("SELECT news_id, news_title, news_date, news_resume 
          FROM  news 
          WHERE news_show = :newsS 
          ORDER BY news_date DESC"); 

    $stmt->execute(array('newsS' => 'S')); 
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC); 
    foreach ($result as $row) { 
     $aId[] = $row['news_id']; 
     $aTitle[] = $row['news_title']; 
     $aDate[] = $row['news_date']; 
     $aResume[] = $row['news_resume']; 
    } 
} 
catch(PDOException $e) 
{ 
    echo "Error:". $e->getMessage(); 
} 
+0

謝謝!正是這樣!我不是一個懶惰的人,因爲有趣的評論建議我是,我只是想學習!社區需要更多像你這樣的人!你是對的! –