Php codeigniter数据库选择比较字符串

Php codeigniter数据库选择比较字符串,php,sql,codeigniter,Php,Sql,Codeigniter,我试图在我的codeigniter项目的一个模型中进行选择。 我在其他一些函数中使用了您接下来将看到的方法,并且在比较ints和非strings时从未遇到过问题。但是,现在我正在比较字符串,选择没有正确执行,因为它不会返回任何结果 public function get_frasesr_by_cee($ficha_id){ $query = $this->db->query("SELECT * FROM tabela_cee_r where id_ficha='".$fic

我试图在我的codeigniter项目的一个模型中进行选择。 我在其他一些函数中使用了您接下来将看到的方法,并且在比较
int
s和非
string
s时从未遇到过问题。但是,现在我正在比较字符串,选择没有正确执行,因为它不会返回任何结果

public function get_frasesr_by_cee($ficha_id){

    $query = $this->db->query("SELECT * FROM tabela_cee_r where id_ficha='".$ficha_id."';");

    if ($query->num_rows() > 0){
    //var_dump($query->result());

    $nomes_frasesr_cee;
    $i=0;

    foreach($query->result() as $row){
        $nomes_frasesr_cee[$i]=$row->cod_frase_r;
        //var_dump("Ola");
        $i++;
    }

    $max = sizeof($nomes_frasesr_cee);
    //var_dump($max);
    $dados_frasesr_cee;

    for($j = 0; $j < $max;$j++)
    {
        var_dump($nomes_frasesr_cee[$j]);
        $query1 = $this->db->query("SELECT * FROM frases_r where cod_frase_r='".$nomes_frasesr_cee[$j]."';");
        //var_dump($query1->result());
        foreach($query1->result() as $value){
                $dados_frasesr_cee[$j][0]=$value->id_frase_r;
                $dados_frasesr_cee[$j][1]=$value->cod_frase_r;
                $dados_frasesr_cee[$j][2]=$value->desc_frase_r;
                $dados_frasesr_cee[$j][3]=$value->desc_frase_r_ing;
                $dados_frasesr_cee[$j][4]=$value->desc_frase_r_esp;
                $dados_frasesr_cee[$j][5]=$value->diretiva_frase_r;
        }
    }
    var_dump($dados_frasesr_cee);
    return $dados_frasesr_cee;

} else {
        return;
    }

}

您没有转义字符串($nomes\u frasesr\u cee[$j]),这可能会导致一个无效语句。 要创建有效的语句,请尝试以下操作:

$query1 = $this->db->query("SELECT * FROM frases_r where cod_frase_r=?;", array($nomes_frasesr_cee[$j]));

我不知道为什么要创建一个额外的数组并再次循环以获得相同的值。。我发现您在代码中没有使用创建的数组(至少在发布的代码中)

试试这个

public function get_frasesr_by_cee($ficha_id){

$query = $this->db->query("SELECT * FROM tabela_cee_r where id_ficha='".$ficha_id."'");

if ($query->num_rows() > 0){

foreach($query->result() as $row){
    $query1 = $this->db->query("SELECT * FROM frases_r where cod_frase_r='".$row->cod_frase_r."'");
    //var_dump($query1->result());
    foreach($query1->result() as $value){
            $dados_frasesr_cee[]=$value->id_frase_r;
            $dados_frasesr_cee[]=$value->cod_frase_r;
            $dados_frasesr_cee[]=$value->desc_frase_r;
            $dados_frasesr_cee[]=$value->desc_frase_r_ing;
            $dados_frasesr_cee[]=$value->desc_frase_r_esp;
            $dados_frasesr_cee[]=$value->diretiva_frase_r;
    }        

var_dump($dados_frasesr_cee);
return $dados_frasesr_cee;

} else {
    return;
}

} 
注意:您确实需要阅读CI的用户指南,并使用active_record…大部分加入 使用join,只需一个查询即可完成此操作

范例

public function get_frasesr_by_cee($ficha_id){   
 $this->db->select('t.*,f.*');
 $this->db->from('tabela_cee_r'.' t');
 $this->db->join('frases_r'.' f','t.cod_frase_r=f.cod_frase_r','left');
 $this->db->where('t.id_ficha',$ficha_id) 
 return $this->db->get();
});

它是一个数组吗?如果是这样的话,你必须在它们之间加逗号。你打印过查询了吗…比如什么样的查询被激发了???kees sonnema,对不起,但是什么之间加逗号?非常感谢。没关系,我以为它可能是一个数组。但这不是问题所在。忘记我说过的:)我尝试了sjkm,不起作用:(我在添加数组变量的部分中,在这个查询中确实遗漏了一些内容。请在脚本中打印sql语句,并将其发布到这里,这样我们就可以看到它出了什么问题。我们想知道查询的外观(字符串)。请发布。对不起,我没有得到你假装的东西。你的意思是,如果它有任何结果吗?打印“选择*FROM frases\r其中cod\u frases\r=”。$nomes\u frasesr\u cee[$j]。“;”你是对的,我不需要那个额外的循环,我会删除它,谢谢你。但这并不能解决我的问题。或者你向我透露的方式不起作用,我真的在选择的那部分遗漏了一些东西,他只是没有得到我的var的值,我不知道为什么,因为如果我在选择之前打印它,那么这个值就在那里了。我会是吗省略一个“,”或某个函数以便他能够理解该变量的值?即使是行->cod\u frase\r也不会给出结果:O
public function get_frasesr_by_cee($ficha_id){   
 $this->db->select('t.*,f.*');
 $this->db->from('tabela_cee_r'.' t');
 $this->db->join('frases_r'.' f','t.cod_frase_r=f.cod_frase_r','left');
 $this->db->where('t.id_ficha',$ficha_id) 
 return $this->db->get();
});