我得到了类似的代码:
$stmt = $pdo->prepare('SELECT * FROM table WHERE user LIKE :user');
后来我得到了
$stmt->bindValue(':user', '%'.$user.'%', PDO::PARAM_STR);
$stmt->execute();
它不起作用。我很确定这是用MySQL做一个LIKE语句的正确方法,但是当我输入用户名的某些部分时它不起作用,但是当我输入完整的用户名时,它就像一个魅力。 任何想法为什么LIKE语句不想做一个简单的正则表达式?
答案 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变量后生成比较字符串。