从数据库获取查询 - Codeigniter

时间:2017-08-18 17:33:19

标签: php mysql codeigniter codeigniter-2 codeigniter-3

我想检查数据库中是否存在用户名, 但是Codeigniter正在抛出一个

错误:无法在写入上下文中使用方法返回值。

代码如下:

public function check_username_exists($username){
    $query = $this->db->get_where('users', array('username' => $username));
    if(empty($query->row_array())){
        return true;
    }else{
        return false;
    }
}

4 个答案:

答案 0 :(得分:3)

$result = $query->row_array();
if(empty($result)){
   return true;
}else{
   return false;
}

答案 1 :(得分:0)

尝试使用以下代码

public function check_username_exists($username){
 $query = $this->db->get_where('users', array('username' => $username));
            if($query->num_rows() > 0){
                return true;
            }else{
                return false;
            }
        }

答案 2 :(得分:0)

您似乎正在尝试验证用户注册表单。如果是这种情况,那么使用内置的form_validation库(https://codeigniter.com/user_guide/libraries/form_validation.html)会好得多。已有一种内置方法可以帮助您确保拥有唯一的记录(例如用户名)。基本上,一旦加载form_validation库,您就需要设置验证规则。设置规则后,您可以调用run()方法,无论是否通过验证,都会生成bool true / false。

$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', "trim|required|is_unique[users.username]");
if($this->form_validation->run() === true) {
    //Do something when posted form is validated
} else {
    // There were errors or this is the first time
    if(validation_errors())
        $data['error_message'] = validation_errors();
}

您应该使用表单验证库来验证整个应用程序中的任何(通常是所有)表单

希望有所帮助

答案 3 :(得分:0)

首先了解错误:在写上下文中不能使用方法返回值。

empty()需要通过引用访问该值(以便检查该引用是否指向存在的内容)。

但是,你遇到的真正问题是你根本使用empty(),错误地认为"空"价值与" false"。

有任何不同

Empty只是!isset($thing) || !$thing的别名。当你检查的东西总是存在时(在函数调用的PHP结果中总是存在),empty()函数只不过是一个否定运算符。

没有解决您的问题,正如Scott Miller建议您可以使用CodeIgniter验证。如果您需要一些先进的解决方案,那么您可以将您的验证放在配置文件夹中并创建form_validation.php以获取更多详细信息,请访问validation的CodeIgniter文档。

$config = array(
    array(
            'field' => 'username',
            'label' => 'Username',
            'rules' => 'required|is_unique[users.username]'
    )
);

如果你想用查询来做,那么这里是查询:

public function check_username_exists($username){
    $query = $this->db->get_where('users', array('username' => $username));
    if ($query->num_rows() > 0){
        return true;
    }
    else{
        return false;
    }
}

您可以使用num_rows来获取用户名是否存在。