猿问

Codeigniter查询构建器类:如何正确处理可能的意外错误?

使用Node.js之后,我习惯了各种基于Promise的api,这些API会在出现某些错误的情况下引发异常/错误。

在Codeigniter和Laravel中,我都看到了所有查询类型为“假定”一切正常的示例:无需try-catch或任何其他形式的错误处理。

例如,我看到CI的“插入”方法成功时返回true,失败时返回false。尽管如此,我所见过的示例都没有对操作使用任何if / else布尔检查。Laravel也是如此,这显然是一个更加现代和专业的框架。

我现在所做的是为每个返回布尔值的查询手动检查“ true”或“ false”,但是问题是某些方法返回了其他类型,例如“ insert_batch”方法,其返回类型表示为“混合”。

有人可以阐明这个问题吗?其他人采用什么方法来确保由于错误的数据库错误处理而不会导致任何中断?

CI文档中相关部分的链接:https : //www.codeigniter.com/user_guide/database/query_builder.html? highlight = query% 20builder


吃鸡游戏
浏览 157回答 1
1回答

慕娘9325324

“已读”查询-get()和get_where()-未正确记录。它说返回是a,CI_DB_result但它也可以返回FALSE。我总是使用这种模式(或类似的模式)检查“读取”方法的返回。$query = $this->db->get(); return $query !== FALSE ? $query->result() : NULL;最主要的是要知道在尝试对其运行方法之前$query不是FALSE这样。对于“写”查询,只需返回查询生成器方法的结果即可,例如return $this->db->insert('mytable', $data);当然,此退货的接收者需要注意。的下一行代码可以返回以下中的任何一个:TRUE,FALSE或CI_DB_result对象。$this->db->query('YOUR QUERY HERE');的完整定义query()是DB_driver::query($sql, $binds = FALSE, $return_object = NULL);将返回检查调整为$sql字符串请求。一旦确定了查询语句的语法,将来的问题通常与不良的输入数据有关。我通常花更多的时间检查查询输入数据而不是输出。像这样的东西:这里实际上有值吗?它是正确的数据类型吗?在预期范围内吗?垃圾进垃圾出。
随时随地看视频慕课网APP
我要回答