Ошибка MySQL в CodeIgniter - PullRequest
       1

Ошибка MySQL в CodeIgniter

0 голосов
/ 22 сентября 2011

Моя модель:

    function version()
    {
        $this->load->database();

        $this->db->select('location_id');  
   $this->db->from('geo_blocks');  
   $this->db->where("2057793231 BETWEEN `ip_start` AND `ip_end`"); 
 echo   $query=$this->db->get()->row();  

    }

Ошибка, которую я получаю:

A Database Error Occurred

Error Number: 1054

Unknown column ' ip_start <= 2057793231 AND ip_end >= 2057793231' in 'where clause'

SELECT `location_id` FROM (`geo_blocks`) WHERE ` ip_start <= 2057793231 AND ip_end >= 2057793231

Line Number: 93

Но запрос работает в PHPMyAdmin:

SELECT * FROM `geo_blocks` WHERE 2057793231 BETWEEN `ip_start` AND `ip_end`

Я такжепробовал разные запросы, которые выдают одинаковый вывод в PHPMyAdmin, но не в CodeIgniter:

$this->db->where("ip_start <= 2057793231 AND ip_end >= 2057793231"); 

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 22 сентября 2011

Вы используете функцию where () - неправильно.Весь смысл функции where в том, чтобы система определяла, где находится столбец, и какое значение следует избегать, чтобы предотвратить инъекции mysql.В этом случае первый параметр должен быть столбцами, а второй - значением:

$this->db->where('ip_start <=', 2057793231);
$this->db->where('ip_end >=', 2057793231);

Обратите внимание, что функцию where () можно вызывать более одного раза.Он просто добавляет AND между двумя условиями.

1 голос
/ 22 сентября 2011

Исходя из этого,

SELECT `location_id` FROM (`geo_blocks`) WHERE ` ip_start <= 2057793231 AND ip_end >= 2057793231

Между ГДЕ и ip_start .

существует непревзойденный `
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...