使用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
1 回答
慕娘9325324
TA贡献1783条经验 获得超4个赞
“已读”查询-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
字符串请求。
一旦确定了查询语句的语法,将来的问题通常与不良的输入数据有关。我通常花更多的时间检查查询输入数据而不是输出。像这样的东西:这里实际上有值吗?它是正确的数据类型吗?在预期范围内吗?垃圾进垃圾出。
- 1 回答
- 0 关注
- 156 浏览
添加回答
举报
0/150
提交
取消