Php codeigniter mysql中sql查询的空结果

Php codeigniter mysql中sql查询的空结果,php,mysql,codeigniter,Php,Mysql,Codeigniter,当我在codeigniter中使用$this->db->query($sql)执行sql查询时它给了我一个空结果。但是当我直接从mysql执行相同的查询时,它会给出正确的结果。如果有人遇到过这个问题,你能帮帮我吗? 我在同一个项目中有更多的sql查询,这些查询工作正常 查询- $sql = 'select r.no from routes r where r.id = (select rp.route_id from routes_and_places

当我在codeigniter中使用
$this->db->query($sql)执行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)得到了精确的查询如果有人知道解决方案,请帮助

您传递的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);
逐个打印所有结果并检查。
试试这个

直接打印
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);

我终于找到了解决办法。我从google places API获取
$place
变量的值。因此,当我获得位置时,尽管它在
$this->db->last_query()中不可见它包含这些位置的
CSS
标记。这意味着谷歌发送
CSS
以突出显示带有地点的道路名称。经过几个小时的研究,我终于发现了一个错误,说语法不正确,它在
where子句中显示了一些
CSS
代码,这意味着
$place
也包含一些
CSS
代码。因此,我从字符串中删除了那些
CSS
标记,现在它工作正常

用于从字符串中删除CSS标记/新行字符和所有其他内容的代码

$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);
$text=strip_标记($step->html_说明,”);//从文本中删除css

$substring=substr($text,strpos($text),“删除查询中的一个分号
(;)
。我现在尝试了。但没有任何更改。第一个分号用于查询,第二个分号用于变量。我认为两个分号都有不是一个错误是的。我的意思是,我通过调用print\r($sql)得到了$place变量的实际值的精确查询;然后我用$place的值复制了那个查询,并直接在mysql中执行,它给了我期望的结果。上面的代码和我的代码相同。但它给了我空的结果。修改了你的查询。还尝试调试你的查询。检查查询是否正确生成。检查编辑。我不明白当我从echo$this->db->last_query();并将其复制并直接在mysql中执行,因此它会给我答案,但通过$this->db->query($sql);它会给我一个空结果可以通过print_r打印查询($this->db->last_query());然后检查查询?是的,我做了。查询工作正常。我认为如果此查询在sql中运行,那么PHP文件中不应该有任何问题。只需在sql中运行此查询,而不是使用phpmyadmin,那么您将获得一个生成PHP的选项,只需复制PHP并将其粘贴到$sql变量前面,然后重试ain。@Ronakhauhan当您传递$sql1=sql2->row时,您的查询有问题,它应该是$sql1=$sql1-row(),而在where子句中的send sql命令$sql2中,它应该是$sql1->id@imran是的,我换了