使用LIKE语句执行时PDO的疯狂行为

时间:2012-08-04 18:58:15

标签: php mysql pdo

我得到了类似的代码:

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

后来我得到了

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

它不起作用。我很确定这是用MySQL做一个LIKE语句的正确方法,但是当我输入用户名的某些部分时它不起作用,但是当我输入完整的用户名时,它就像一个魅力。 任何想法为什么LIKE语句不想做一个简单的正则表达式?

1 个答案:

答案 0 :(得分:1)

我在自己的LIKE查询代码中使用的是:

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

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

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