-1

次の行は例外をスローします -

$sth = $db->prepare("SELECT * FROM providers WHERE name LIKE %:name%");

致命的なエラー: キャッチされない例外 'PDOException' とメッセージ 'SQLSTATE[HY000]: 一般エラー: "%" 付近の 1: 構文エラー'

% 記号を取り除くとエラーは解消されますが、明らかに検索がうまくいきません。:-プレフィックス付きの PDO 変数の代わりに実際の値を入れて、引用符をいじってみました。エラーを取り除く唯一の方法は、% 記号を取り除くことです。私は途方に暮れています。

4

1 に答える 1

1

LIKE演算子は文字列を取ります:

$db->prepare("SELECT * FROM providers WHERE name LIKE '%' + :name + '%'");

:nameはすべてに一致することに注意してください ( '%%')

Sqlite は||文字列を連結するために使用するので、そうする'%' || :name || '%'べきです。

別の方法 (この質問から取得) は、パラメーターの値にパーセント記号を追加することです。したがって、クエリがLIKE :nameあり、パラメーターをバインドする前に、パーセント記号を追加します。$name = '%'.$name.'%'; $sth->execute(array('name' => $name));

于 2013-10-29T07:14:54.470 に答える