如何判断mysqli的查询有无成功执行?CRUD

发布于 2022-09-11 19:43:47 字数 664 浏览 24 评论 0

想问问

$do = new mysqli(DBHOST, DBUSERNAME, DBPASSWORD, $config['db']);

当使用了以下的UPDATE语句 (或 INSERT....)

$do->query(
      "UPDATE `user` SET
      `session` = '1'
      WHERE `id` = '123' "
   );

如何有效的知道是否有执行成功?
让我可以做抛出例外的判断?

以及当我要 SELECT 时

$found =$do->query(
   "SELECT 1 FROM `user`
   WHERE `id` = '1' "
);

假设有找到,能够怎么判断?
有没有预设可用的函数?
我的方式为

$found = mysqli_num_rows($do->query(
   "SELECT 1 FROM `user`
   WHERE `id` = '1' "
));

if (!$found) ...

只是这样好像有点⋯⋯诡异
以上有没有更简洁或更有效率的方式来判断呢?
例如可以讓語句只要很简单的回布林值就行?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

我为君王 2022-09-18 19:43:47

失败,判断 result===false 就知道是不是成功了啊

柠栀 2022-09-18 19:43:47

1、优先处理异常。
2、CUD 操作返回为成功操作的记录数,失败时返回 false ,判断是否 全等于 false 即可。
3、R操作返回为结果集,判断结果集是否为空。

青巷忧颜 2022-09-18 19:43:47

图片描述

基于mysqli/pdo的相互未兼容的状态, 我建议做二次封装, 全部用"返回受上一个 SQL 语句影响的行数" 来判断是否成功.
pdo 读类操作需要判断: PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数
pdo 写类操作PDO::exec() 在一个单独的函数调用中执行一条 SQL 语句,返回受此语句影响的行数

pdo可以重新封装一个query, 统一返回影响行数字类型.. 并且以try纠错..

mysqli

失败时返回 FALSE,通过mysqli_query() 成功执行SELECT, SHOW, DESCRIBE或 EXPLAIN查询会返回一个mysqli_result 对象,其他查询则返回TRUE。 

虽然mysqli_query大致有对返回定义. 但事实上需要大量测试才可以验证, 为了更兼容,
个人建议在返回对象时, 对mysqli_num_rows( mysqli_result $result) : int进行判断.
在返回布尔值时, 直接对mysqli_affected_rows() 进行判断. 两个方法都100%返回数字型.

代码编写时, 均用try做纠错处理...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文