Php CodeIgniter有时收到消息查询错误

Php CodeIgniter有时收到消息查询错误,php,mysql,sql-server,codeigniter,Php,Mysql,Sql Server,Codeigniter,虽然这种情况很少发生,但有时我的项目会在我的查询中显示错误消息 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,logAc

虽然这种情况很少发生,但有时我的项目会在我的查询中显示错误消息

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
我想这不是因为我的质疑

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
有什么建议说明为什么会发生这种情况吗

这是我查询的示例

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
这是我的数据,用于
$query=$this->db->query(“从mUser中选择*,其中username='“$uname.”)

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

-如果我的英语不好,很抱歉。

花了大约$uname,你不会得到任何结果。所以,在转换为row()之前,应该检查查询是否返回结果。像这样

$query =$this->db->query("SELECT * FROM mUser WHERE username='".$uname."'"); 
if($query->num_rows() == 1){
    $query->row();
}else{
 //....
}
我想你没有用。 $query->row();或$query->result();在查询的最后

$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'];
}

问题出在我的连接上,我在本地主机上尝试过,但从未出现过问题。thx all.

发布错误message@barcelona_delpy这就是问题所在,当我刷新页面时,错误消失了,我的项目正常运行。很少会出现错误的信息。如果显示错误,我将发布它。@barcelona\u将此错误与我得到的错误进行比较:致命错误:在C:\xampp\htdocs\Myproject\application\models\query.php的第88行对非对象调用成员函数row()。线路总是变化的。这就是为什么我如此困惑,我的项目出了什么问题。我怀疑问题出在我的连接上,这可能是因为连接吗?例如:服务器运行时错误。请在
query.php
中输入第88行,然后是什么原因导致$uname没有得到任何结果?当另一次有结果时。你能发布uname和DB的样本数据包含username列值吗。因为可能有不匹配的字符。因此,请在这里张贴样本数据,并用大写字母填写用户名“ADR”。假设您给出了“adr”(小写字母)或“adr”等等,那么它将不匹配。所以你应该检查这里,我认为这不是真正的问题。顺便说一句,谢谢。只需在命令SELECT*FROM mUser WHERE username='ADR'//SELECT*FROM mUser WHERE username='ADR'//SELECT*FROM mUser WHERE username='ADR'中使用不同的字符串执行即可。当然,我在查询结束时有$query->result()