2009-08-25 13 views
2

如何使用Postgres Like命令中的參數?瞭解PHP中Postgres Like命令中的參數

我在閱讀this document。 我正在搜索表questions中的單詞lorem以及其列body

我沒有成功運行下面的代碼PHP內

$result = pg_query_params ($dbconn, 
    "SELECT question_id, body 
    FROM questions 
    WHERE body ilike '%$1%'", 
    array ($_GET['search'])                                      
); 

我得到這樣的警告

Warning: pg_query_params() [function.pg-query-params]: Query failed: ERROR: bind message supplies 1 parameters, but prepared statement "" requires 0 in /var/www/codes/search_body.php on line 10 Call Stack

+0

謝謝您的解答! –

回答

6

你在一個地方整個價值的使用參數,而不是引號內。

解決方法1:將串聯通配符LIKE到參數值:

$result = pg_query_params ($dbconn, 
    "SELECT question_id, body 
    FROM questions 
    WHERE body ilike $1", 
    array ("%" . $_GET['search'] . "%") 
); 

解決方案2:串聯的LIKE通配符SQL表達式:

$result = pg_query_params ($dbconn, 
    "SELECT question_id, body 
    FROM questions 
    WHERE body ilike '%' || $1 || '%'", 
    array ($_GET['search']) 
); 
2

我覺得因爲$ 1單引號中它被當作文字,而不是一個佔位符。

嘗試:

$result = pg_query_params ($dbconn, 
    "SELECT question_id, body 
    FROM questions 
    WHERE body ilike $1", 
    array ('%' . $_GET['search'] . '%')                                      
);