Codeigniter:$ this-> db-> _error_message()消息返回NULL

时间:2015-10-30 10:24:26

标签: php mysql codeigniter mysqli

我有一个查询,它给了我完美的结果。但我需要将mysql错误(如果有的话)发送到UI。所以我故意将列名更改为blah_text

$qID = 13
$this->db->select('id AS optionID, blah_text AS option, is_correct AS isCorrect');
$oQuery = $this->db->get_where('xq_options', array('question_id' => $qID));
if($oQuery){
    $qnaArray['options'] = $oQuery->result_array();
}
else{
    //$qnaArray['error'] = $this->db->_error_message();
    echo "Error: " .  $this->db->_error_message();
}

所有获取都是Error:

我尝试使用原生的mysqli函数mysqli_error($oQuery);但是使用相同的O / P

注意:我在数据库配置文件中设置了'db_debug' => FALSE。如果我将其设置为TRUE,我会收到CI错误消息

Error Number: 1054 Unknown column 'blah_text' in 'field list' SELECT id AS optionID, blah_text AS option, is_correct AS isCorrect

如何捕获变量中的sql错误并将其发送到像$qnaArray['error']

这样的UI

编辑:'db_debug'目前设为FALSE。我希望在变量中设置错误消息。没有在屏幕上回显。

4 个答案:

答案 0 :(得分:1)

选择数据时,

$this->db->_error_message();将不会执行。

使用此

$qID = '13';
$query = $this->db->query(
            "SELECT id AS optionID, blah_text AS option, is_correct AS isCorrect 
             FROM table_name WHERE xq_options = $qID");
$result = $query->result_array();
$count = count($result);

if (!empty($count)) {
    return $result;
}
else{
    echo "No Data Found";
}

答案 1 :(得分:0)

而不是:

if($oQuery)
{
   $qnaArray['options'] = $oQuery->result_array();
}
else{
//$qnaArray['error'] = $this->db->_error_message();
echo "Error: " .  $this->db->_error_message();
}  

尝试使用此功能:

if($oQuery->num_rows()>0)
{
   $qnaArray['options'] = $oQuery->result_array();
}
else{
//$qnaArray['error'] = $this->db->_error_message();
echo "Error: " .  $this->db->_error_message();
}    

答案 2 :(得分:0)

使用

$e = $this->db->error(); // Gets the last error that has occured
$num = $e['code'];
$mess = $e['message'];

https://www.codeigniter.com/userguide3/database/queries.html搜索"处理错误"

中提供的信息

答案 3 :(得分:0)

if (!$this->db->simple_query('SELECT `id` FROM `customers`')) {
   $error = $this->db->error();
}

$data['db_error_message'] = 'Error [' . $error['code'] . '] ' . $error['message'];

从第https://www.codeigniter.com/userguide3/database/queries.html#handling-errors页上的文档

在您看来,此代码会打印出这样的消息;

数据库错误消息:错误[1146]表'mydb.customers'不存在

同样,您的代码会打印出相同的结果。

$qID = 13;
$this->db->select('id AS `optionID`, blah_text AS `option`, is_correct AS `isCorrect`');
$oQuery = $this->db->get_where('xq_options', array('question_id' => $qID));

if (!$oQuery) {
   $err = $this->db->error();
}
$data['err_message'] = 'Error [' . $err['code'] . '] ' . $err['message'];

打印; 错误消息:错误[1146]表'mydb.xq_options'不存在

我没有创建表格,因此我的消息是“找不到表”错误消息而不是“未找到列”。

我想这就是你想要的。