Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用LIKE语句执行时PDO的疯狂行为_Php_Mysql_Pdo - Fatal编程技术网

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

Php 使用LIKE语句执行时PDO的疯狂行为,php,mysql,pdo,Php,Mysql,Pdo,我得到了这样的代码: $stmt = $pdo->prepare('SELECT * FROM table WHERE user LIKE :user'); 后来我 $stmt->bindValue(':user', '%'.$user.'%', PDO::PARAM_STR); $stmt->execute(); 而且它不起作用。我很确定这是使用MySQL执行LIKE语句的正确方法,但当我输入用户名的某个部分时,它不起作用,但当我输入完整用户名时,它就像一个符咒。 你知道

我得到了这样的代码:

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

$stmt->bindValue(':user', '%'.$user.'%', PDO::PARAM_STR);
$stmt->execute();
而且它不起作用。我很确定这是使用MySQL执行LIKE语句的正确方法,但当我输入用户名的某个部分时,它不起作用,但当我输入完整用户名时,它就像一个符咒。
你知道为什么LIKE语句不想做一个简单的正则表达式吗?

我在自己的代码中使用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变量后生成比较字符串。

我在自己的代码中用于类似查询的是:

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

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

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

这是正确的方法。确保已将PDO设置为在错误上引发PDO异常
$PDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION)绑定部分用户名时,结果为空,但绑定整个用户名时,结果有效。我想这样做,当我绑定用户名的一部分时,它也会产生一些结果。我还设置了抛出异常。PDO认为它工作正常。有没有办法在绑定后检查查询?别理它。我记得数据是通过SQL单独发送的…是的。我只是没有得到答案:)如果你愿意,你可以回答你自己的问题。这是正确的方法。确保已将PDO设置为在错误上引发PDO异常
$PDO->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION)绑定部分用户名时,结果为空,但绑定整个用户名时,结果有效。我想这样做,当我绑定用户名的一部分时,它也会产生一些结果。我还设置了抛出异常。PDO认为它工作正常。有没有办法在绑定后检查查询?别理它。我记得数据是通过SQL单独发送的…是的。我只是没有得到答案:)如果你愿意,你可以回答你自己的问题。