我想检查数据库中是否存在用户名, 但是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;
}
}
答案 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
来获取用户名是否存在。