有数据库 字段 id user_name userpassword
$m=m('Usert');
$map['user_name']='wang';
$map['userpassword']='123';
$data=$m->where($map)->select();
dump($data);
转化后的sql是:
SELECT * FROM `usert` WHERE `user_name` = 'wang' AND `userpassword` = '123'
没问题,查出了一条数据
但 $map['user_name']='wang'; 不小心写成了$map['username']='wang';
也就是这个字段数据中不存在,而另一个 $map['userpassword']='123';是写对的,也就是只有一个字段是真实存在了,这时
转化后的sql是:
SELECT * FROM `usert` WHERE `userpassword` = '123'
居然也查出了一条数据 按作者意思应该满足两件条件才查出啊,如果一个条件写错了,应该报错啊。
于是试着把两个条件都写错,奇迹发生了
$m=m('Usert');
$map['username']='wang';
$map['userpass']='123';
$data=$m->where($map)->select();
dump($data);
转化后的sql是:
SELECT * FROM `usert`
好家伙,把整表的数据全查询出来了。
可能数组方式就是哪个数据数据库中没有,哪个条件就省略,全都写错了,就全省略了,是不是这样啊,各位前辈
最佳答案