2012-05-16 2 views
9

私は準備済みの文の中でLIKEを使用しようとしていますが、ワイルドカード%の使用による構文エラーのためにphpはその文を実行しません。pg_prepare内のLIKEワイルドカードを使用

はここのものは、PHPは私に構文エラーを主張する2行目の警告を示すことであるコード

$query = pg_prepare($conn, "MyStatement", 
    'SELECT "Query" from "MyTable" 
    WHERE "Query" LIKE $1% 
    ORDER BY "MyColumn" DESC;'); 

$result = pg_execute($conn, "MyStatement", array($my_param)); 

です。

ありがとうございます!

+0

正確にどのようなエラー? – zerkms

+2

postgresqlにはあまり慣れていませんが、バインディングではなく、実際の値に%を渡す必要があると思います。 array($ my_param。 '%')と似ています。 – Corbin

+0

ありがとうコービン、確かにソリューションはあなたが提供したものでした:) – danielrvt

答えて

10

私はPDOアダプタを使用して同じ問題のバインディングパラメータを持っていました。解決策は、変数との "%" を渡すことです:

$query = pg_prepare($conn, "MyStatement", 
'SELECT "Query" from "MyTable" 
WHERE "Query" LIKE $1 
ORDER BY "MyColumn" DESC;'); 

$result = pg_execute($conn, "MyStatement", array($my_param."%")); 

あなたは

...LIKE '%param%' ... 

が必要な場合はその後、あなたのクエリは次のようになります。

$result = pg_execute($conn, "MyStatement", array("%".$my_param."%")); 
+0

右。構文エラーは引用によるものです。それは何でも '%' 'の代わりに' 'LIKE ''に変わります。そうです、テンプレートではなく、パラメータにワイルドカードを入れてください。 –

+0

返事をお寄せいただきありがとうございます!それは私の多くを助けた!!! :) – danielrvt

関連する問題