用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1576|回复: 8
收起左侧

[已解决] $query 的 return 总是不对

[复制链接]
发表于 2016-2-2 10:32:32 | 显示全部楼层 |阅读模式
user的model

function userexist($tel)
        {
                $query = $this->db->query("select * from User where tel='".$tel."'");
                if ($query) {
                        return TRUE;
                }
                return FALSE;
          }


在 ake 的 controller 中调用
$tel = "13112341234";
$this->load->model('user_model');
$select_query = $this->user_model->userexist($tel);


想得到的结果是检查该手机号码在数据库中是否存在,存在则返回1,错误则返回0, 但现在遇到的问题是,不管是否存在这个电话号码,返回都是 1,请问我写错的地方是?
发表于 2016-2-2 11:22:02 | 显示全部楼层
你这样写法,是不是无论如何都会返回false啊,因为一步步执行下来,总会执行到 return false,
 楼主| 发表于 2016-2-2 11:35:56 | 显示全部楼层
bayniwffg 发表于 2016-2-2 11:22
你这样写法,是不是无论如何都会返回false啊,因为一步步执行下来,总会执行到 return false, ...

...
这样写没错,不可能都会返回 false
发表于 2016-2-2 12:00:45 | 显示全部楼层
for 发表于 2016-2-2 11:35
...
这样写没错,不可能都会返回 false

你把return FALSE; 屏蔽了试试,看会不会总是返回都是 1
发表于 2016-2-2 12:17:47 | 显示全部楼层
query返回的是执行结果,SQL是可以正常执行的,所以会返回TRUE,你需要的是执行SQL后的对象个数
发表于 2016-2-2 22:53:07 | 显示全部楼层
我也感觉楼上说的有道理,可以使用count_all_results函数:
PHP复制代码
 
public function userexist($tel)
{
        $this->db->where(array('tel'=>$tel));
        $result = $this->db->count_all_results('User');
        return $result;
}
 
复制代码

        
发表于 2016-2-3 11:03:54 | 显示全部楼层
你应该判断$query->num_rows()啊  不是直接判断$query

本版积分规则