当我使用$this->db->query($sql);
在codeigniter中执行sql查询时,它给了我一个空结果。但是当我直接从mysql执行相同的查询时,它给了我正确的结果。如果有人遇到这个问题帮助我吗?
我在同一个项目中有更多的sql查询,这些查询工作正常。
查询 -
$sql = 'select r.no from routes r where r.id =
(select rp.route_id from routes_and_places rp where rp.place_id =
(select p.id from places p where p.name = \''.$place.'\'));';
执行此操作时,我得到了print_r($sql);
的确切查询,我直接在mysql中执行了它,它给了我预期的结果。
如果有人知道解决方案请帮助
答案 0 :(得分:0)
您传递的sql字符串存在问题
$this->db->select('id');
$this->db->where('name',$place);
$sql1 = $this->db->get('places');
$sql1 = $sql1->row();
$this->db->select('route_id');
$this->db->where('place_id',$sql1->id);
$sql2 = $this->db->get('routes_and_places');
$sql2 = $sql2->row();
$this->db->where('id',$sql2->route_id);
$sql3 = $this->db->get('routes');
$sql3 = $sql3->result();
print_r($sql3);
逐个打印所有结果并检查。 试试这个!
答案 1 :(得分:0)
直接打印print_r($sql);
不会为您提供结果。它只是sql查询,现在你必须执行它并获得结果。试试这个,
$sql = "select r.no from routes r where r.id =
(select rp.route_id from routes_and_places rp where rp.place_id =
(select p.id from places p where p.name = '".$place."'));";
$query = $this->db->query($sql);
$result = $query->result();
/* print query */
echo $this->db->last_query();
/* print results */
print_r($result);
答案 2 :(得分:0)
最后我找到了解决方案。我从google places API获取$place
变量的值。因此,当我获得地点时虽然$this->db->last_query();
无法显示,但它包含CSS
个地方标记。这意味着谷歌发送CSS
以突出显示带地点的道路名称。经过几个小时的处理这个问题,我得到一个错误,说错误的语法,它在CSS
中显示了一些where clause
代码,这意味着$place
也包含一些CSS
代码。所以我从String中删除了那些CSS
标签,现在它正常工作。
从CSS tags/new line characters
此处
Strings
和所有其他内容的代码
$text = strip_tags($step->html_instructions,"<style>"); // remove css from text
$substring = substr($text,strpos($text,"<style"),strpos($text,"</style>")+2);
$text = str_replace($substring,"",$text);
$text = str_replace(array("\t","\r","\n"),"",$text);
$text = trim($text);