我有一个查询,它给了我完美的结果。但我需要将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']
编辑:'db_debug'
目前设为FALSE。我希望在变量中设置错误消息。没有在屏幕上回显。
答案 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'不存在
我没有创建表格,因此我的消息是“找不到表”错误消息而不是“未找到列”。
我想这就是你想要的。