1

私はそのようなコードを得ました:

$stmt = $pdo->prepare('SELECT * FROM table WHERE user LIKE :user');

そして後で私は

$stmt->bindValue(':user', '%'.$user.'%', PDO::PARAM_STR);
$stmt->execute();

そして、それは機能しません。これがMySQLでLIKEステートメントを実行する正しい方法であると確信していますが、ユーザー名の一部を入力すると機能しませんが、完全なユーザー名を入力すると魅力的になります。LIKE ステートメントが単純な正規表現を実行したくない理由はありますか?

4

1 に答える 1

1

LIKE クエリの独自のコードで使用するものは次のとおりです。

$stmt = $pdo->prepare('SELECT * FROM table WHERE user LIKE CONCAT(\'%\', :user, \'%\')');

$stmt->bindValue(':user', $user, PDO::PARAM_STR);
$stmt->execute();

$user 変数が PDO によってエスケープされた後、CONCAT強制的に MySQL が比較文字列を生成するようにします。

于 2012-09-10T15:29:43.390 に答える