Php 比较字段的MD5结果为空
我有一个函数来计算哪些输入了用户id的MD5,哪些输出了Php 比较字段的MD5结果为空,php,mysql,sql,md5,Php,Mysql,Sql,Md5,我有一个函数来计算哪些输入了用户id的MD5,哪些输出了id,name public function verifyUser($enc) { //echo $enc; $query = $this->db->prepare("SELECT id,name FROM `users` WHERE MD5(`id`) = '$enc'"); //$query->bindValue(1,$enc); $query->execute(); $
id,name
public function verifyUser($enc)
{
//echo $enc;
$query = $this->db->prepare("SELECT id,name FROM `users` WHERE MD5(`id`) = '$enc'");
//$query->bindValue(1,$enc);
$query->execute();
$data = $query->fetch();
//var_dump($query);
return $data;
}
但是上面的查询结果总是空的
例如,我有一个id=2的用户,MD5(2)
isc81e728d9d4c2f636f067f89cc14862c
。它生成的查询是:
从
users中选择id和name,其中MD5(
id)=“c81e728d9d4c2f636f067f89cc14862c”
但是,尽管用户退出,结果却是空的。查询本身正在按预期工作。检查此SQLFiddle: 不过似乎下面这行有一些问题。试试下面这个:
$query = $this->db->prepare("SELECT id, name FROM users WHERE MD5(id) = '$enc'");
注意:我删除了代码中围绕用户和id的错误引号字符。您的查询是否返回空结果集,或者id和名称是否为NULL?此外,您似乎对bindValue部分进行了注释,并且没有发送参数$enc的值。您是否尝试手动计算它(将您的查询粘贴到phpMyadmin上,等等)。因为它正在工作。md5(2)查询正在按预期工作。检查此小提琴:是的,查询返回所需的o/p。但是当我变量转储查询时,它会像
SELECT id,name FROM users WHERE md5(id)一样输出='c81e728d9d4c2f636f067f89cc14862c'
我认为导致错误的空白似乎就是问题所在。