Intereting Posts
Сравните все значения в php-массиве с другими значениями Как построить структуру класса, когда члены также структурированы иерархически? Где я должен поместить этот код в Laravel? Что означает ошибка «PHP Fatal error: не может вызвать перегруженную функцию для не-объекта»? Поддерживает ли php порядок в ассоциативном массиве? Laravel 4 – Класс контейнера: функция распределения и закрытия Производство Php.ini и разработка Удалить имя действия из Url в cakephp? Сервер Xampp PHP GET работает Fine POST не работает Почему невозможно запустить исполняемый файл с функциями exec () или system ()? Насколько уникален идентификатор сеанса php Java «Блокировка браузера» при загрузке Если PHP mt_rand () использует более быстрый алгоритм, чем rand (), почему бы просто не изменить rand () для использования более новой реализации? Шаблон класса в PHP, как в C ++ MySQLi count (*) всегда возвращает 1

как проверить, существует ли имя пользователя в кодеригенере

Я работаю над сайтом в codeigniter. Я не настолько эксперт, использующий framework.Here мне нужно проверить, существует ли электронная почта в базе данных. Я закодировал требуемые функции, но при отправке формы я получаю сообщение об ошибке. В контроллере я сделал следующее правило.

Мой код:

$this->form_validation->set_rules( 'email', 'Email', 'trim|required|valid_email|is_unique|callback_isEmailExist' ); public function isEmailExist($email) { $this->load->library('form_validation'); $this->load->model('user'); $is_exist = $this->user->isEmailExist($email); if ($is_exist) { $this->form_validation->set_message( 'isEmailExist', 'Email address is already exist.' ); return false; } else { return true; } } 

в модели пользователя функция:

 function isEmailExist($email) { $this->db->select('id'); $this->db->where('email', $email); $query = $this->db->get('users'); if ($query->num_rows() > 0) { return true; } else { return false; } } 

Когда я отправляю форму, я получаю следующие ошибки.

Возникла ошибка PHP

Уровень важности: уведомление

Сообщение: Неопределенное смещение: 1

Имя файла: libraries / Form_validation.php

Номер строки: 953

Ошибка базы данных Произошла

Номер ошибки: 1064

У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'WHERE `=' muraddnw@gmail.com 'LIMIT 1' в строке 2

SELECT * WHERE `= 'muraddnw@gmail.com' LIMIT 1

Имя файла: C: \ xampp \ htdocs \ aunction \ system \ database \ DB_driver.php

Номер строки: 330 Кто-нибудь мне помогает. Заранее спасибо.

Related of "как проверить, существует ли имя пользователя в кодеригенере"

Ваша проблема в строке set_rules. Здесь вы используете как is_unique и функцию callback . Вы должны использовать кого-либо из этого. Если вы используете функцию call_back для проверки повторяющихся данных; не нужно использовать is_unique. For this wrong you get that error Просто удалите is_unique оттуда.

 $this->form_validation->set_rules('email','Email','trim|required|valid_email|callback_isEmailExist'); // removed is_unique 

Попробуйте это и дайте мне знать.

Просто добавьте is_unique[tablename.fieldname] к проверке формы. например:

  array('field' => 'email', 'label' => 'Email', 'rules' => 'trim|required|valid_email|is_unique[users.email]')); 
 $this->form_validation->set_rules('username', 'userName', 'required|callback_exists_username'); #uniqueness of username function exists_username($str) { $record_id = $this->input->post('record_id'); $condition = array('user_id !='=>$record_id,'username'=>$str); $value =GetAllRecord('user_master',$condition,$is_single=true); if (count($value) == 0) { return TRUE; } else { $this->form_validation->set_message('exists_username', 'username already exists!'); return FALSE; } } 

Ваша модель похожа на

 $this->db->select('id'); $this->db->where('email', $email); 

скажите mysql, из какой таблицы вы хотите получить запись.

$this->db->from('tablename');

это было бы похоже на

 $this->db->select('id'); $this->db->from('tablename'); $this->db->where('email', $email); 

У вас есть ошибка в запросе mysql: –

 SELECT * WHERE ` = 'muraddnw@gmail.com' LIMIT 1 

Ваш код не указал, из какой таблицы запрашивать. Поэтому используйте следующее: –

 $this->db->select('id'); $this->db->from('tablename'); $this->db->where('email', $email); 

Надеюсь это поможет.

нет необходимости делать специальную функцию, этого достаточно

 $this->form_validation->set_rules( 'email', 'Email', 'trim|required|valid_email|is_unique' ); 

Используйте is_unique[table.field] добавьте имя и поле таблицы.

 $this->form_validation->set_rules( 'email', 'Email', 'trim|required|valid_email|is_unique[table.field]|callback_isEmailExist' ); 

вы можете проверить, является ли поле уникальным или нет, с помощью функции is_unique[table_name.field_name]