2017-01-10 18 views
0

我想寫PostgreSQL數據庫的SELECT查詢,但不是我得到一些錯誤 - pg_query():查詢失敗:錯誤:在「$」或附近的語法錯誤線1選擇查詢posgres數據庫使用php

$findResult = pg_query('SELECT * FROM fingerprintdata WHERE buildingname = $building '); 
$numrows = pg_num_rows($findResult); 
+0

_Don't_連接你的查詢在一起,而不是使用準備好的語句。 –

+0

你的表名是小寫的,正如你在這裏建議的 - fingerprintdata? – craig

回答

0

查詢應該是這樣的:

pg_query('SELECT * FROM fingerprintdata WHERE buildingname = "$building" '); 

的變量應該是內部引號 「」

+0

謝謝Jordy,但它不工作,我已經嘗試 –

0
$findResult = pg_query($conn, 'SELECT * FROM fingerprintdata WHERE buildingname = "$building"'); 
$numrows = pg_num_rows($findResult); 
+0

謝謝Silentfox,我試圖你編輯的查詢,但得到這個錯誤 - pg_query()期望參數1是資源,對象給出 –

0

請嘗試下面的解決方案。你沒有在單引號中加上等號,這就是爲什麼你會得到變量的錯誤。

$findResult = pg_query('SELECT * FROM fingerprintdata WHERE buildingname =' . $building); 
$numrows = pg_num_rows($findResult); 
+0

謝謝克雷格,它不工作我已經嘗試 –

+0

謝謝克雷格,它正在工作。 –

+0

你可以建議我,如果我想添加多個where子句那麼將會是什麼聲明?例如。 $ findResult = pg_query(「SELECT * FROM fingerprintdata WHERE buildingname ='」.trim($ building)。'',floorlevel ='「.trim($ floor)。」';「); –

0
$query = 'SELECT * FROM fingerprintdata WHERE buildingname = '.pg_escape_literal($building); // to be able to var_dump($query) to see, what it actually looks like 
$findResult = pg_query($query); 

在你的情況,你是使用單引號,不擴大$building內。如果你使用雙引號,它會工作,但你會很容易受到SQL注入(例如$building = "xxx'; DROP DATABASE ...";