2014-06-23 35 views
0

我正在運行一些PHP代碼,我試圖找到具有指定參數的行。我已成功連接數據庫,但是我遇到了一個問題。Postgres'where'查詢與PHP不工作

當我運行這段代碼:

$SQL = "SELECT * FROM schema.table"; 
    $result = pg_exec($dbconn, $SQL); 
    while ($row = pg_fetch_array($result) { 
      echo "data: " .$row . "<br/>\n"; 

我得到陣列表明我成功地從數據庫中取這些數據,並能打印出來到網站頁面的打印清單。

但是,我需要過濾數據,我只希望具有特定ID的行。當我嘗試此查詢:

$SQL = "SELECT * FROM schema.table WHERE 'ID' = '123'"; 

pg_numrows($result)爲0時,有四排與123號並沒有什麼顯示也沒有數組,我不知道爲什麼添加「其中」語句改變任何東西。數據發生了什麼,爲什麼過濾它將不再起作用?


已解答:找出遇到同樣問題的人的答案。

$SQL = "SELECT * FROM schema.table WHERE \"ID\" = '123'"; 

這是必須用於字符變化列的語法。感謝大家讓我意識到我正在用錯誤的引號運行一段有趣的代碼。

+1

爲什麼你的ID通過'包圍,應該不是很123而不是'123'? – Sefam

+0

反引號和單引號和熊,哦,我的! –

+2

字符串'ID'永遠不會等於字符串'123'。 – bloodyKnuckles

回答

2

使用這樣的..

$SQL = "SELECT * FROM schema.table WHERE ID = 123"; 

切勿使用列名的單引號,從來沒有使用整型單引號..

+0

您應該解釋原始語法有什麼問題,以便OP瞭解問題所在。 –

+0

@Mike Brant感謝您的評論我解釋 – user3763227

+0

如果我不在ID上使用單引號,則會出現此錯誤:查詢失敗:錯誤:列「id」不存在。當我從123脫掉單引號時,我得到:查詢失敗:錯誤:整數 – user3756998