2009-08-25 13 views
2

Wie können Sie Parameter in Postgres Like Befehl verwenden?Parameter in Postgres verstehen Wie in PHP

Ich lese this document. Ich versuche, ein Wort lorem in der Tabelle questions und in seiner Spalte body zu suchen.

betreibe ich erfolglos, den folgenden Code in PHP

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

ich diese Warnung erhalten

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

Dank für Ihre Antworten danken! –

Antwort

6

Sie haben einen Parameter anstelle eines ganze Wert zu verwenden, und nicht in Anführungszeichen.

Lösung 1: die LIKE Platzhalter in den Parameterwert verketten:

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

Lösung 2: verketten die LIKE Platzhalter in der SQL-Ausdruck:

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

Ich denke, weil die 1 $ in einfache Anführungszeichen ist es, als wörtliche genommen wird, statt einen Platzhalter.

Versuchen:

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