2009-08-25 34 views
2

Postgres Likeコマンドでどのようにパラメータを使用できますか?PHPのPostgres Likeコマンドのパラメータを理解する

私はthis documentを読んでいます。 loremという単語をテーブルquestionsとその列bodyに検索しようとしています。

私はこの警告

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つの全体値、および内部のない引用符の代わりにパラメータを使用する必要があります。

解決方法1:パラメータ値にLIKEワイルドカードを連結します。

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

解決方法2:SQL式のLIKEワイルドカード連結:

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

を取得に失敗したPHP

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

内部に次のコードを実行して$ 1は、それが代わりにプレースホルダの、リテラルとして解釈される単一引用符で囲まれているので、私は思います。

試してみてください。

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