只要修改一下用户名和密码就可以了。
原来是我误会了 PDO ,这个并不是它的问题。 MySQL 执行的查询语句是:
SELECT * FROM `user` WHERE `email` = FALSE LIMIT 1;
原因可以参考: http://stackoverflow.com/questions/8369379/can-false-match-some-string-in-mysql
1
laoyuan 2015-08-22 14:15:22 +08:00
反正我用 CI 框架的时候看到社区里都说用 MySQLi , PDO 各种坑
|
2
haiyang416 OP @laoyuan 我刚测试了一下生成环境,也能查询到用户,先去修改下。
|
4
luxin88 2015-08-22 15:15:14 +08:00
gist 的证书被 tg 劫持了?
|
5
haiyang416 OP @luxin88 我这里没有。
|
7
cevincheung 2015-08-22 15:50:21 +08:00
用 mysqli 的路过
|
8
zjqzxc 2015-08-22 15:59:57 +08:00
然而并没有发现任何问题。
楼主是什么问题? 话说这个 SET time_zone = '+00:00';是要闹什么。。 |
9
haiyang416 OP |
10
msg7086 2015-08-23 01:14:35 +08:00 1
提供一个 debug 的思路。可以把 mysql 收到的 sql 打到日志里。看看到底哪里错了。
https://dev.mysql.com/doc/refman/5.6/en/query-log.html |
11
realpg 2015-08-23 09:28:31 +08:00 1
我很少自己手动用 PDO ,基本都是用 MYSQLi ,所以没遇到楼主问题
我仔细看了一下 PDO 的 bind 的几个方法的手册,没看到楼主这种绑定为 false 的用法,所以我想问一下楼主这种用法有没有可靠的出处? 因为至少我用的 5.5 版里, MYSQL 并没有原生的 BOOLEAN 的类型, BOOLEAN 的类型就是个 tinyint (1 ), 0 为 false ,其他为 true 。首先你指定了传进去的变量强制类型 PDO::PARAM_BOOL 这个常量的调用,我在我庞大的参与过的 MYSQL 的项目库的代码里搜索都没见过有人用,然后把一个要代入生成 SQL 语句的参数传入一个表示否定的 false ,在没有手册详细说这种用法的前提下,这个 false 到底会被怎么解释?这个变量舍弃?还是传入这个变量是空?还是代入一个 0 ?所以我觉得得到任何乱七八糟的结果都不奇怪。 然后就是你到底是啥需求?想取出 email 是空的?那正常的 SQL 语句你设想的是啥样的? select * from table where email = NULL ?这个应该用 PDO_PARAM_NULL ,传入 NULL 处理 还是想要找为空字符串的(非 NULL )?那就传入一个空字符串 "" 然后是调试建议: 1. $query->bindParam (1, $email, PDO::PARAM_BOOL ); 这个绑定改成 $debug=$query->bindParam (1, $email, PDO::PARAM_BOOL ); 然后输出一下这个$debug 确认绑定操作是否返回 true ,这个绑定是否生效存疑 2. 使用 debugDumpParams 输出一下 stmt 的情况 http://php.net/manual/zh/pdostatement.debugdumpparams.php |
12
zjqzxc 2015-08-23 09:35:33 +08:00 1
昨天没认真看程序,直接执行出结果了。。
select * from user where email=false; 这句话想要表达什么 email=false , false 已经告诉它是 bool 型了,我理解的是忽略 email 这个字段。(我也不知道怎么解释了) 如果想判断空值可以用 is null select * from user where email is null; |
13
haiyang416 OP |
14
haiyang416 OP 原因找到了,又是类型的自动转换,谢谢回复的各位,结帖。
|