codeigniter mysql中sql查询的空结果

时间:2015-05-30 03:52:49

标签: php mysql codeigniter

当我使用$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中执行了它,它给了我预期的结果。 如果有人知道解决方案请帮助

3 个答案:

答案 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);