MySQL error in CodeIgniter
My model:
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();
}
The error I'm getting:
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
But the query works fine in PHPMyAdmin:
SELECT * FROM `geo_blocks` WHERE 2057793231 BETWEEN `ip_start` AND `ip_end`
I also tried different queries which produce the same output in PHPMyAdmin, but not in CodeI开发者_JAVA技巧gniter:
$this->db->where("ip_start <= 2057793231 AND ip_end >= 2057793231");
What am I doing wrong?
You're using the where()-function wrong. The entire point with the where function is for the system to determine where the column is, and what value to escape in order to prevent mysql injections. In this case the first parameter needs to be the columns and the second one the value:
$this->db->where('ip_start <=', 2057793231);
$this->db->where('ip_end >=', 2057793231);
Note that you can call the where() function more then once. It simply adds an AND between the 2 conditions.
Based on this,
SELECT `location_id` FROM (`geo_blocks`) WHERE ` ip_start <= 2057793231 AND ip_end >= 2057793231
There's an unmatched ` in between WHERE and ip_start.
精彩评论