Intereting Posts

Вывод SQL-запроса + codeigniter

Я использую codeigniter и большую часть времени использую активную запись для своих запросов (что автоматически ускользает от них), но этот запрос, похоже, не аккуратно вписывается в него из-за переменной. Поэтому мне нужно выяснить, как избежать запроса вручную.

Документы Codeigniter предлагают избегать запросов таким образом:

$sql = "INSERT INTO table (title) VALUES(".$this->db->escape($title).")"; 

Мой исходный запрос

 $sql = "SELECT * FROM (`user_language`) WHERE `user_id` = '{$id}'"; 

Мой сбежавший запрос

 $sql = "SELECT * FROM (`user_language`) WHERE `user_id` = '{$id}' VALUES(".$this->db->escape($user_language).")"; 

Но мне трудно получить синтаксис. Сообщения об ошибках:

  • Сообщение об ошибке PHP: неопределенная переменная: user_language
  • Ошибка SQL: синтаксис неправильный … около «VALUES (NULL)» в строке 1

Solutions Collecting From Web of "Вывод SQL-запроса + codeigniter"

 $sql = "SELECT * FROM `user_language` WHERE `user_id` = " . $this->db->escape($id); 

если вы хотите выбрать язык пользователя, заданный с помощью $ id, он должен работать таким образом.

имея дело с числами, альтернативой будет:

 $sql = "SELECT * FROM `user_language` WHERE `user_id` = " . (int)$id; 

codeigniter также поддерживает подготовленные операторы как «привязки запросов»:

Второе преимущество использования привязок заключается в том, что значения автоматически экранируются, создавая более безопасные запросы. Вам не нужно забывать вручную удалять данные; двигатель делает это автоматически для вас.

Я смущен, почему вы говорите, что не можете использовать класс Active Record с CI, это простой вызов SQL (пример ниже использует цепочку методов ):

 $this->db->select('*')->from('user_language')->where('user_id', $id); $query = $this->db->get(); 

Ваш $id затем сбрасывается должным образом, и вы уменьшаете любую инъекцию. Лично я использую AR, когда это возможно, он позволяет мне писать быстрый эффективный код и не беспокоиться о плохих вещах с помощью SQL-запросов (пользовательских запросов).