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

CONCAT在 $user 变量被 PDO 转义后,使用强制 MySQL 生成比较字符串。

于 2012-09-10T15:29:43.390 回答