Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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:PDO bindValue()导致返回0个结果_Php_Mysql_Pdo_Bindvalue - Fatal编程技术网

PHP:PDO bindValue()导致返回0个结果

PHP:PDO bindValue()导致返回0个结果,php,mysql,pdo,bindvalue,Php,Mysql,Pdo,Bindvalue,我在使用PDO bindValue()函数时遇到了一些问题。每当我使用它时,我的查询总是返回0个结果。但是,如果我直接将$user和$pass放入sql中,而不使用bindValue()的话,它就可以正常工作 $user是一个字符串 $password是一个sha1()散列 您不应该自己在值周围加引号,它们将被添加(如果需要,例如在字符串的情况下-本例中): 不得引用已准备语句中的占位符;PDO已经在做所有的报价了。你想要: $sql = "SELECT `username,`password

我在使用PDO bindValue()函数时遇到了一些问题。每当我使用它时,我的查询总是返回0个结果。但是,如果我直接将$user和$pass放入sql中,而不使用bindValue()的话,它就可以正常工作

$user是一个字符串
$password是一个sha1()散列


您不应该自己在值周围加引号,它们将被添加(如果需要,例如在字符串的情况下-本例中):


不得引用已准备语句中的占位符;PDO已经在做所有的报价了。你想要:

 $sql = "SELECT `username,`password` FROM `" . TB_PREFIX . "users` " .
        "WHERE `username` = :user AND `password` = :pass";

使用准备好的语句时,值会自动转义

这意味着,您不必在参数周围设置引号

尝试:

你应该没事的


不过,作为旁注:您永远不应该按字面意思存储用户密码。查看这篇优秀的文章:

':user'
-为什么不干脆
:user
?阅读该手册,其中有一些示例:。请在执行$query()之前尝试打印它。同时检查语法,它已损坏(除了占位符)。所以下次要更小心。阅读时,问题似乎在于引用。你应该写:WHERE
username
=:user而不是WHERE
username
=':user'可能的副本,
$sql = "SELECT `username,`password` FROM `" . TB_PREFIX . "users` 
        WHERE `username` = :user AND `password` = :pass";
 $sql = "SELECT `username,`password` FROM `" . TB_PREFIX . "users` " .
        "WHERE `username` = :user AND `password` = :pass";
$sql = "SELECT `username,`password` ".
       "FROM `" . TB_PREFIX . "users` ".
       "WHERE `username` = :user AND `password` = :pass";