Php PDO绑定参数导致AES_ENCRYPT的结果不正确
我在使用函数AES_ENCRYPT with PDO时遇到了一个问题,当我使用下面带有:pass和:key的SQL语句作为绑定参数时,我从数据库中找不到匹配项。但是,如果将它们取出并直接放在SELECT语句中,我会得到一个正确的计数结果。Php PDO绑定参数导致AES_ENCRYPT的结果不正确,php,mysql,pdo,Php,Mysql,Pdo,我在使用函数AES_ENCRYPT with PDO时遇到了一个问题,当我使用下面带有:pass和:key的SQL语句作为绑定参数时,我从数据库中找不到匹配项。但是,如果将它们取出并直接放在SELECT语句中,我会得到一个正确的计数结果。 我是否将这些错误地嵌入到语句中,或者是否有其他方法使select函数与AES_ENCRYPT函数一起正常工作?该函数可正确使用直线参数,例如 从用户名=:name和电子邮件=:email的用户中选择* $query[] = "SELECT COUNT(1) F
我是否将这些错误地嵌入到语句中,或者是否有其他方法使select函数与AES_ENCRYPT函数一起正常工作?该函数可正确使用直线参数,例如
从用户名=:name和电子邮件=:email的用户中选择*
$query[] = "SELECT COUNT(1) FROM users WHERE active=1 AND username=:username AND password=AES_ENCRYPT(:pass,:key);";
$query[] = array(
'username' => $username,
'pass' => $pass,
'key' => $key );
list($exists) = select( $query, true );
function select( array &$query, $one=FALSE ) {
try {
$stmt = $this->PDO->prepare( $this->named_queries( $query[0] ) );
foreach( $query[1] as $k=>$v ) {
$stmt->bindParam( ":$k", $v );
}
$stmt->execute();
$query = array(); # If the query is from a loop this prevents only the first loop's SELECT from being used.
if( $one ) {
$return = $stmt->fetch();
}else{
$return = $stmt->fetchAll();
}
return $return;
}catch( PDOException $e ) {
if( $this->test )
self::print_error( __METHOD__, $e->getMessage() );
return false;
}
}
但真正的原因是缺乏调试感谢我在发布前搜索了一段时间寻找答案的链接。php和mysql中的错误报告没有输出任何内容,我只收到了一个零计数。调试不仅仅限于读取错误消息。