1

我正在尝试在我的 codeigniter 项目模型之一中进行选择。int我已经在其他一些函数上使用了接下来您将看到的方法,并且自从我比较s 和 not s以来从未遇到过问题string。但是,现在我正在比较字符串,选择没有正确完成,因为它没有返回任何结果。

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;
    }

}

我猜选择认为这个 var$nomes_frasesr_cee[$j]是空的,而她不是。如果我直接用数据库中的某个字符串替换 var,它会完美运行,所以我不知道 var 有什么问题。

有什么提示吗?谢谢!

var_dump($query1) 的结果;

object(CI_DB_mysql_result)#21 (8) { ["conn_id"]=> resource(29) of type (mysql link persistent) ["result_id"]=> resource(43) of type (mysql result) ["result_array"]=> array(0) { } ["result_object"]=> array(0) { } ["custom_result_object"]=> array(0) { } ["current_row"]=> int(0) ["num_rows"]=> int(0) ["row_data"]=> NULL }
4

2 回答 2

1

您没有对字符串 ($nomes_frasesr_cee[$j]) 进行转义,这可能会导致语句无效。为了创建一个有效的语句,试试这个:

$query1 = $this->db->query("SELECT * FROM frases_r where cod_frase_r=?;", array($nomes_frasesr_cee[$j]));
于 2013-06-04T09:45:24.833 回答
1

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

试试这个

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...JOINS 主要 与 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();
});
于 2013-06-04T09:46:43.900 回答