2013-12-10 155 views
0

我是PDO的新手,我正努力在準備好的聲明中使用'where'語句。以下是我試過的代碼。它返回的數據無法從數據庫中檢索。PDO準備好聲明「where」問題

誰能告訴我問題是什麼?任何嘗試等?

欣賞它!

$user_id = 1; 

try { 
    $query = $db->prepare(" 
      SELECT title, img, id 
      FROM listings 
      ORDER BY id DESC 
      WHERE userID = :user_id 
      LIMIT 2"); 
$query->bindParam(':user_id', $user_id, PDO::PARAM_INT); 
$query->execute(); 

} catch (Exception $e) { 
    echo "Data could not be retrieved from the database."; 
    exit; 
} 

$data = $query->fetchAll(PDO::FETCH_ASSOC); 

return $data; 

UPDATE:我換了order & where條款,但它仍然沒有返回值(如反對以前的錯誤消息)。

+2

你爲什麼不檢查異常,'$ē ',看看有什麼問題? – eggyal

+0

我建議您通過以下方式向我們展示一個示例:http://sqlfiddle.com/至少可以看到查詢是否正常。 –

+0

請不要這樣做,例外。只要讓他們走在這個低水平。如果你必須抓住它們,但是對於開發工作,你會想知道所有'PDOException'的細節。此外,如果您更改了代碼,請更新您的問題 – Phil

回答

4

像這樣重寫你的查詢。 [你需要把ORDER BY子句中的WHERE後]後where條件

$query = $db->prepare(" 
      SELECT title, img, id 
      FROM listings 
      WHERE userID = :user_id 
      ORDER BY id DESC 
      LIMIT 2"); 
+0

謝謝,這將刪除錯誤消息。但現在它什麼也沒有返回,只是一個空白的屏幕。其他代碼中可能存在問題嗎? – Alex

+0

@AlexDanieli是的。我們在返回'$ data'後看不到你做了什麼 – Phil

+0

@Phil它在函數中,即使我只是這樣做: print_r(get_products_userDashboard()); 它什麼也沒有返回 – Alex

1

ORDER BY id DESC需要添加。

$query = $db->prepare(" 
      SELECT title, img, id 
      FROM listings    
      WHERE userID = :user_id 
      ORDER BY id DESC 
      LIMIT 2"); 

Mysql的通用選擇語法:

SELECT 
    [ALL | DISTINCT | DISTINCTROW ] 
     [HIGH_PRIORITY] 
     [STRAIGHT_JOIN] 
     [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] 
     [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] 
    select_expr [, select_expr ...] 
    [FROM table_references 
    [WHERE where_condition] 
    [GROUP BY {col_name | expr | position} 
     [ASC | DESC], ... [WITH ROLLUP]] 
    [HAVING where_condition] 
    [ORDER BY {col_name | expr | position} 
     [ASC | DESC], ...] 
    [LIMIT {[offset,] row_count | row_count OFFSET offset}] 
    [PROCEDURE procedure_name(argument_list)] 
    [INTO OUTFILE 'file_name' export_options 
     | INTO DUMPFILE 'file_name' 
     | INTO var_name [, var_name]] 
    [FOR UPDATE | LOCK IN SHARE MODE]] 
+0

謝謝,這將刪除錯誤消息。但現在它什麼也沒有返回,只是一個空白的屏幕。其他代碼中可能存在問題嗎? – Alex

0

where子句應該是爲了子句之前 試試這個

$query = $db->prepare(" 
      SELECT title, img, id 
      FROM listings 
      WHERE userID = :user_id 
      ORDER BY id DESC 
      LIMIT 2"); 
+0

謝謝,這將刪除錯誤消息。但現在它什麼也沒有返回,只是一個空白的屏幕。其他代碼中可能存在問題嗎? – Alex