ThinkPHP按条件查询的记录总是第一条是怎么回事?

baidu_33210997 2015-12-01 03:15:18
mysql数据库testsever中有一个user表,表结构就username和password两个字段,有4条记录:
username password
test 111111
lmm 123456
qazwsx qwerrty
qqq 111111
我做了个简单的查询方法,
$sql3="mysql://root:root@localhost:3306/testsever";
public function search()
{
$userName = $_REQUEST["user"];
//$username["USERNAME"] = "ugung";
$m = M("user", "", "$this->sql3");
$userData = $m->where(array('USERNAME'=>$username))->find();
if(!empty($userData))
{
$this->show('<h1>请求成功</h1>', 'utf-8');
$this->ajaxReturn(200,"请求成功",$userData);
}
else
{
$this->show('<h1>请求失败</h1>', 'utf-8');
$this->ajaxReturn(300,"请求失败");
}
}
我直接在浏览器上输入http://127.0.0.1/app/test.php?m=Index&a=search&user=qqq,按理说应该会返回最后那条记录,但是结果还是第一条test 11111的记录。我换成select()方法$userData = $m->select()后,这样四条记录全部获取到了。find()方法我知道只能查询一条记录,但是按where USERNAME=’qqq‘查询之后肯定只有一条记录啊。我实在找不出原因啊,求各位大神指点啊!
...全文
447 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xuzuning 2015-12-02
你不是已查到 第一条 数据了吗?
回复
baidu_33210997 2015-12-02
引用 5 楼 xuzuning 的回复:
根据用户名查询用户信息 肯定只会得到一条记录(用户名不会相同) 这与 find方法最多只会返回一条记录 并不矛盾
那为啥同样的方法,一个可以根据用户名查询指定的数据,另一个就不行呢?
回复
智商众筹 2015-12-02
$userData = $m->where(array('USERNAME'=>$username))->find(); 你先把$username 写死成 'qqqq'试试,然后把数组形式的where条件,改成字符串的再试试
回复
bear63 2015-12-02
引用 3 楼 xuzuning 的回复:
手册中说的很清楚了: 读取数据的操作其实和数据集的类似,select可用的所有连贯操作方法也都可以用于find方法,区别在于find方法最多只会返回一条记录,因此limit方法对于find查询操作是无效的。 如果这也都视而不见的话,最好还是改行吧
看来我得改行了。。。。
回复
xuzuning 2015-12-02
find方法最多只会返回一条记录 看不明白吗?
回复
baidu_33210997 2015-12-02
引用 7 楼 xuzuning 的回复:
你不是已查到 第一条 数据了吗?
不管我把用户名指定为哪个,查出来 的始终都是第一条,所以才问的. 之前检查了代码以为将$userName变量名改为一样就可以了,结果还是不行。
回复
xuzuning 2015-12-01
根据用户名查询用户信息 肯定只会得到一条记录(用户名不会相同) 这与 find方法最多只会返回一条记录 并不矛盾
回复
baidu_33210997 2015-12-01
引用 3 楼 xuzuning 的回复:
手册中说的很清楚了: 读取数据的操作其实和数据集的类似,select可用的所有连贯操作方法也都可以用于find方法,区别在于find方法最多只会返回一条记录,因此limit方法对于find查询操作是无效的。 如果这也都视而不见的话,最好还是改行吧
我同样的方法,根据用户名查询用户信息的,为啥这个就可以得到想要的记录啊? public function userinfo() { $userName = $_REQUEST["username"]; $m = M("user", "m_", "$this->sql"); $data = $m->where(array('USERNAME'=>$userName))->find(); if(!empty($data)) { $this->ajaxreturn(200, C('success.' . $this->lang), $data); } else { $this->ajaxreturn(300, C('fail.' . $this->lang)); } }
回复
xuzuning 2015-12-01
手册中说的很清楚了: 读取数据的操作其实和数据集的类似,select可用的所有连贯操作方法也都可以用于find方法,区别在于find方法最多只会返回一条记录,因此limit方法对于find查询操作是无效的。 如果这也都视而不见的话,最好还是改行吧
回复
baidu_33210997 2015-12-01
还是不对啊,我把两个变量名字改成一样的了,查询的结果还是第一条!没天理啊!来神啊!人已经不起用了!
回复
baidu_33210997 2015-12-01
我去,我找到了!你妹啊!真想抽自己一个大嘴巴!因为是手打的,$userName = $_REQUEST["user"]; 和$userData = $m->where(array('USERNAME'=>$username))->find(); 两个$userName和$username不一样,我去他大爷的!以后坚决不手打了,复制粘贴复制粘贴复制粘贴复制粘贴复制粘贴复制粘贴复制粘贴复制粘贴复制粘贴复制粘贴复制粘贴多好啊
回复
相关推荐
发帖
PHP
创建于2008-08-27

1.9w+

社区成员

“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
申请成为版主
帖子事件
创建了帖子
2015-12-01 03:15
社区公告
暂无公告