Intereting Posts
PHP: вывод команды команды / Shell_exec в веб-браузере Как я могу конкатенировать значение внутри функции в jquery в этой ситуации? PHP: как создать Geo-Fence (ограничивающий блок) с использованием расстояния от набора кодов как использовать facebook для входа пользователя на мой сайт? Устанавливает ли безопасное разрешение для доступа к папке 777? PHP Вызов неопределенной функции Возврат коллекции после обновления ()? Функция php mail отправляется прямо в папку нежелательной почты Загрузить файл с использованием конечной точки Guzzle 6 в API Арифметическая операция в конкатенации строк без круглых скобок вызывает странный результат Удаление строки таблицы mySQL с помощью jQuery Ajax Двухфакторная система аутентификации php-число с плавающей запятой, показанное в экспоненциальной форме Как очистить первый абзац от страницы википедии? Как получить год и месяц с даты – PHP

Как проверить, существует ли идентификатор – codeigniter

Я пытаюсь проверить, существует ли идентификатор в базе данных, а если нет, то только вставьте этот идентификатор, а не другие, которые существуют

Я попытался сделать оператор where, который проверяет, существует ли их идентификатор в базе данных, но даже если их новая информация не вставляет в базу данных

Я совсем потерял здесь любое руководство будет оценено

ps я не хочу обновлять строку, я хочу вставить новую обновленную, которая не существует

$this->db->where('id',$id); $q = $this->db->get('testing'); if($q) { //Do nothing } else { $this->db->set('id', $id); $this->db->set('message', $message); $query= $this->db->insert('testing'); } 

Модель

 <?php class Fruits_model extends CI_Model { function __construct() { parent::__construct(); $this->load->database(); } function check() { $query = null; //emptying in case $id = $_POST['id']; //getting from post value $name = $_POST['name']; $query = $this->db->get_where('fruits', array(//making selection 'id' => $id )); $count = $query->num_rows(); //counting result from query if ($count === 0) { $data = array( 'name' => $name, 'id' => $id ); $this->db->insert('fruits', $data); } } } ?> 

У вас есть логическая проблема с кодом, который вам нужно исправить.

В вашем коде вы сохраняете результат из своего запроса как $q = $this->db->get('testing') , а $q всегда будет оценивать true, независимо от количества возвращаемых строк.

Вам нужно проверить количество строк, используя $query->num_rows() > 0 а остальная часть кода будет вести себя так, как вы ожидаете.

Для получения дополнительной информации см .: http://ellislab.com/codeigniter/user-guide/database/results.html

 $ql = $this->db->select('id')->from('testing')->where('id',$id)->get(); if( $ql->num_rows() > 0 ) {} else { $a = array('id' => $id, 'message' => $message); $this->db->insert('testing', $a); } 

Это должно сделать это.

Вам нужно выбрать идентификатор в таблице MYSQL с идентификатором, который вы хотите проверить, а затем подсчитать строки. Если число строк равно 0, идентификатор не существует.

  $query = mysql_query("SELECT * FROM your_table WHERE id='$id'"); $count = mysql_num_rows($query); If($count!=0){ // id exists } else { // id doesn't exist } 

обычно поле «id» устанавливается с помощью auto_increment и устанавливает первичный, который является уникальным и не повторяется. Поэтому нет проблем беспокоиться о существующих.

Однако в вашем случае я думаю, что вы не используете его как «уникальное поле».

Позвольте привести пример.

Здесь у меня есть имя таблицы «фрукты»,

 ++++++++++++++++++++++++++++++++++++ ငfruit_id | int (primary) name | text id | int ++++++++++++++++++++++++++++++++++++++ 

в вашей модели

 function checkId($id) { $query=$this->db->get_where('fruits',array('id'=>$id)); //check if 'id' field is existed or not if($query!=null) // id found stop { return FALSE; } else // id not found continue.. { $data = array( 'fruit_id' => $fruit_id , 'name' => $name , 'id' => $id ); $this->db->insert('fruits', $data); } } 

Для проверки идентификатора. Или любое значение столбца существует не в базе данных. В CI есть правило проверки.

Смотрите здесь: Правило проверки

Правило: is_unique

Возвращает FALSE, если элемент формы не уникален для таблицы и имени поля в параметре. Примечание. Это правило требует, чтобы Query Builder был включен для работы.

Пример: is_unique[table.field]

 $this->form_validation->set_rules( 'username', 'Username', 'required|min_length[5]|max_length[12]|is_unique[users.username]', array( 'required' => 'You have not provided %s.', 'is_unique' => 'This %s already exists.' ) ); 

Для более расширенного использования валидации вы можете добавить все правила правил проверки с использованием массива.

  $this->form_validation->set_rules( 'username', 'Username', 'required|min_length[5]|max_length[12]|is_unique[users.username]', array( 'required' => 'You have not provided %s.', 'is_unique' => 'This %s already exists.' ) ); $config = array( 'your_rule_name' => array( array( 'username', 'Username', 'required|min_length[5]|max_length[12]|is_unique[users.username]', array( 'required' => 'You have not provided %s.', 'is_unique' => 'This %s already exists.' ) ) ), array( 'field' => 'email', 'label' => 'Email', 'rules' => 'required' ) ); $this->form_validation->set_rules($config);