1

重複の可能性:
PHP のプリペアド ステートメント… 変数を REGEXP の数値範囲としてバインドしますか?

$query = "SELECT * FROM `mytable` WHERE `file` REGEXP 'This string :var'";
$stmt = $dbh->prepare($query);
$stmt->bindValue(':var', 'exists');
$stmt->execute();

これはエラーをスローします:

SQLSTATE[42000]: 構文エラーまたはアクセス違反

実行前に $query をエコーすると、次のようになります。

SELECT * FROM `mytable` WHERE `file` REGEXP 'This string :var'

正規表現で変数をバインドするにはどうすればよいですか?

4

1 に答える 1

2

2つのこと:適用する列をmysqlに伝える必要がREGEXPあり、プレースホルダーは値が表示される場所でのみ使用できます(@Barmarに感謝)。たとえば、検索col1したい場合は、次の'This string :var'ことを行う必要があります

SELECT * FROM `mytable` WHERE col1 REGEXP CONCAT('This string ', :var)
于 2012-09-23T00:44:17.077 に答える