10

プリペアドステートメント内でLIKEを使用しようとしましたが、ワイルドカード%の使用による構文エラーのため、phpはステートメントを実行しません。

これがコードです

$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));

問題は、phpが2行目に構文エラーを主張する警告を表示することです。

4

1 に答える 1

16

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."%"));
于 2012-05-17T00:46:53.797 に答える