3 votes

CodeIgniter a parfois un message d'erreur de requête

Bien que ce soit rare que cela se produise, parfois mon projet affiche un message d'erreur dans ma requête.

Je pense que cela ne se produit pas à cause de ma requête.

Avez-vous des suggestions sur la raison pour laquelle cela peut se produire?

Voici un exemple de ma requête.

select * from (
        select rlog.id_issue, created.LogUser as create_by, created.LogTime as create_time,r_change.change_by,rlog.tglupt,
        r_aprove.date1 as aproved_date,issue_type,nama_app,status,kondisi,logAct, r_issue.keterangan, logket, param
        from (select id_issue, logAct, max(logtime) as tglupt,param, logket from r_log group by id_issue, logAct, logket,param) rlog
        inner join (select Id_issue, LogUser, LogTime from r_log where LogAct like 'add%' ) created on rlog.id_issue = created.id_issue
        left join r_change on rlog.id_issue = r_change.id_issue
        left join r_aprove on r_change.id_change = r_aprove.id_change
        left join r_issue on rlog.id_issue = r_issue.id_issue
        inner join r_app_det on r_issue.id_app = r_app_det.id_app
        )z where issue_type is not null
        and id_issue = ".$id."
        order by tglupt, case when logAct = 'Add' then '1' else logact end asc

voici mes données pour $query =$this->db->query("SELECT * FROM mUser WHERE username='".$uname."'"); :

-----------------------------------------
  username   |     name        |  role
-----------------------------------------
    ADR      |     andry       |    2
    AND      |     Andrew      |    4
 ------------------------------------------ 

-désolé si mon anglais est mauvais.

0voto

Gopalakrishnan Points 704

Pour certains $uname, vous n'obtenez aucun résultat. Vous devriez donc vérifier si la requête retourne un résultat avant de le convertir en row(). Comme ceci

$query =$this->db->query("SELECT * FROM mUser WHERE username='".$uname."'"); 
if($query->num_rows() == 1){
    $query->row();
}else{
 //....
}

0voto

Rana Aalamgeer Points 519

Je pense que vous n'utilisez pas. $query->row(); OU $query->result(); à la fin de la requête.

$query =$this->db->query("select * from (
        select rlog.id_issue, created.LogUser as create_by, created.LogTime as create_time,r_change.change_by,rlog.tglupt,
        r_aprove.date1 as aproved_date,issue_type,nama_app,status,kondisi,logAct, r_issue.keterangan, logket, param
        from (select id_issue, logAct, max(logtime) as tglupt,param, logket from r_log group by id_issue, logAct, logket,param) rlog
        inner join (select Id_issue, LogUser, LogTime from r_log where LogAct like 'add%' ) created on rlog.id_issue = created.id_issue
        left join r_change on rlog.id_issue = r_change.id_issue
        left join r_aprove on r_change.id_change = r_aprove.id_change
        left join r_issue on rlog.id_issue = r_issue.id_issue
        inner join r_app_det on r_issue.id_app = r_app_det.id_app
        )z where issue_type is not null
        and id_issue = ".$id."
        order by tglupt, case when logAct = 'Add' then '1' else logact end asc");
 foreach ($query->result_array() as $row)
{
   echo $row['title'];
   echo $row['name'];
   echo $row['body'];
}

0voto

Denny Sutedja Points 432

Le problème se situe sur ma connexion, j'ai essayé sur localhost et n'ai jamais rencontré le problème. Merci à tous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X