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‘查询之后肯定只有一条记录啊。我实在找不出原因啊,求各位大神指点啊! 

解决方案 »

  1.   

    我去,我找到了!你妹啊!真想抽自己一个大嘴巴!因为是手打的,$userName = $_REQUEST["user"];
    和$userData = $m->where(array('USERNAME'=>$username))->find();
    两个$userName和$username不一样,我去他大爷的!以后坚决不手打了,复制粘贴复制粘贴复制粘贴复制粘贴复制粘贴复制粘贴复制粘贴复制粘贴复制粘贴复制粘贴复制粘贴多好啊
      

  2.   

    手册中说的很清楚了:
    读取数据的操作其实和数据集的类似,select可用的所有连贯操作方法也都可以用于find方法,区别在于find方法最多只会返回一条记录,因此limit方法对于find查询操作是无效的。如果这也都视而不见的话,最好还是改行吧
      

  3.   


    我同样的方法,根据用户名查询用户信息的,为啥这个就可以得到想要的记录啊?
    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));
    }
    }
      

  4.   

    根据用户名查询用户信息 肯定只会得到一条记录(用户名不会相同)
    这与 find方法最多只会返回一条记录 并不矛盾
      

  5.   

    不管我把用户名指定为哪个,查出来 的始终都是第一条,所以才问的.
    之前检查了代码以为将$userName变量名改为一样就可以了,结果还是不行。
      

  6.   

    find方法最多只会返回一条记录
    看不明白吗?
      

  7.   

    $userData = $m->where(array('USERNAME'=>$username))->find();
    你先把$username 写死成 'qqqq'试试,然后把数组形式的where条件,改成字符串的再试试