我有一个简单的插入,然后选择: -
Array ( )
这会产生: -
SELECT *
FROM `data_strings`
WHERE `string` = 'this and `that` between `, up` `to` and in the.'
原因似乎是当活动记录编译select时,它会为查询添加不必要的反引号,我们最终得到: -
$q = "this and that between , up to and in the.";
$this->db->where('string', $q);
echo $this->db->get_compiled_select('data_strings');
它看起来像Codeigniter中的一个错误。有人知道是否有体面的工作?
要复制:
T
答案 0 :(得分:1)
我想指出这个问题不仅限于get_where()。 where()也会发生这个问题。我测试过并遇到了同样的问题:
<div id="map"></div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="/wp-content/themes/happenstance/css/jquery.qtip.min.css"> </script>
<script src="/wp-content/themes/happenstance/js/mcm.clickable.map.js"></script>
<script>
var map = $("#map").ezClickableMap({});
</script>
我也有同样的问题:
$query = $this->db->where(['string' => $q])
->get('data_strings');
最后,最好的(也可能是唯一的)解决方法是使用CodeIgniter的查询绑定功能:
$query = $this->db->where('string', $q)
->get('data_strings');
这个完整的示例按预期工作:
$query = $this->db->query('
SELECT *
FROM data_strings
WHERE string = ?
', [ $q ] );
请注意:我使用的是mysqli驱动程序。新鲜的CodeIgniter安装。 Ubuntu 14.04,PHP 5.5.9。