【问题标题】:CodeIgniter sometimes got message query errorCodeIgniter 有时会出现消息查询错误
【发布时间】:2017-01-10 00:54:11
【问题描述】:

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

我认为这不是因为我的查询。

有什么建议为什么会发生这种情况?

这是我的查询示例。

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("SELECT * FROM mUser WHERE username='".$uname."'"); 提供的数据:

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

-对不起,如果我的英语不好。

【问题讨论】:

  • 发布错误信息
  • @barcelona_delpy 这就是问题所在,当我刷新页面时,错误消失了,我的项目运行正常。很少会出现错误信息。如果错误显示,我会发布它。
  • @barcelona_delpy 这是我得到的错误:致命错误:调用 C:\xampp\htdocs\Myproject\application\models\query.php 中非对象上的成员函数 row()在第 88 行。线路总是在变化。这就是为什么我如此困惑,我的项目有什么问题。
  • 我怀疑问题出在我的连接上,这可能是因为连接吗?例如:服务器 RunTimeError。
  • query.php输入你的第88行

标签: php mysql sql-server codeigniter


【解决方案1】:

对于某些 $uname 你没有得到任何结果。因此,您应该在转换为 row() 之前检查查询是否返回结果。像这样

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

【讨论】:

  • 那是什么原因导致 $uname 没有得到任何结果?当另一次有结果时。
  • 您能否发布 uname 和 DB 的示例数据包含用户名列值。因为可能有不匹配的字符。所以请在这里发布示例数据
  • 用户名“ADR”大写。假设如果你给“adr”(小写字母)或“Adr”等,它将不匹配。所以你应该在这里查看stackoverflow.com/questions/6632598/…
  • 我认为这不是真正的问题。谢谢顺便说一句。
  • 好的。只需在命令中通过类似这样的不同字符串执行 SELECT * FROM mUser WHERE username='ADR' // SELECT * FROM mUser WHERE username='adr' // SELECT * FROM mUser WHERE username='Adr'
【解决方案2】:

我认为你没有使用。 $查询->行();或 $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'];
}

【讨论】:

  • 当然我在查询结束时有 $query->result()
【解决方案3】:

问题出在我的连接上,我在 localhost 上尝试过,从来没有出现过问题。谢谢大家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 2021-06-27
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    相关资源
    最近更新 更多