首页 文章

非法混合排序 - 简单的PHP登录

提问于
浏览
0

试图做一个简单的PHP登录并遇到一些问题,这是错误:

操作'='的非法混合排序(latin1_swedish_ci,IMPLICIT)和(utf8_general_ci,COERCIBLE)

这是查询

SELECT * FROM `accounts` WHERE `username` = :user AND `password` = MD5(CONCAT(MD5(`salt`), MD5(:pass)))

:user:pass 是包含用户名和密码的预备语句参数 .

我正在尝试在查询中模拟 md5(md5(salt).md5(pass)) .

使用PDO php .

1 回答

  • 0

    根据MD5上的MySql手册,MD5功能的整理结果与您的系统或连接设置相同 .

    我猜你的列排序规则设置与系统设置不同 .

    您可以在创建连接时指定排序规则设置 . 见opening PDO connection .

    没有测试,我认为这样的事情会起作用:

    $dsn = 'mysql:host=localhost;dbname=testdb;charset=latin1_swedish_ci';
    $username = 'username';
    $password = 'password';
    $options = array(
       ...
    ); 
    
    $dbh = new PDO($dsn, $username, $password, $options);
    

相关问题