2013-04-08 103 views
0

我嘗試實現從專輯中設置藝術家的形式搜索。我從形式 變量,我做查詢。成功地從表單中獲得變量。PostgreSql PHP查詢#1:SQLSTATE [42601]:語法錯誤:

$words = $_REQUEST['SQLfield']; 
$tempquery = "SELECT * FROM album WHERE to_tsvector(artist) @@ to_tsquery('$words')"; 
do_sql($tempquery); 

當我搜索例如吉米·亨德里克斯的結果是:

query #1: SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error in tsquery: "Jimi Hendrix " 
+1

將用戶提供的變量直接傳遞到查詢中,沒有任何轉義是非常糟糕的事情。 – 2013-04-08 09:48:05

回答

2

我還沒有在PostgreSQL中,但之後快速掃描the documentation使用全文搜索,我認爲你應該使用plainto_tsquery函數代替to_tsquery,因爲to_tsquery預計類似'jimi & hendrix'plainto_tsquery將接受像'Jimi Hendrix'短語。

+0

非常感謝。我只將to_tsquery更改爲plainto_tsquery。 – vili 2013-04-08 12:15:14