PHP或mysqli能否捕获MySQL控制台返回的SQL执行响应信息?
解决方法
你可以通过题目中提到的两个mysqli内置函数实现需求,两种适用场景分别如下:
仅需获取受影响的行数
使用mysqli_affected_rows(),该函数返回上一次写操作(INSERT/UPDATE/DELETE等)对应的受影响行数:
- 匹配行不存在、无数据被修改时返回
0 - 成功匹配并修改n行时返回
n - 执行出错时返回
-1
面向过程写法示例(改用预处理避免SQL注入风险):
// 已提前通过mysqli_connect建立连接,连接变量为$conn $DoNukePrefsDBC = "DELETE FROM `DB_DiaryOfAnApp`.`ACTVxCJAR` WHERE `REVxGUIDxREF` = ? LIMIT 1"; $stmt = mysqli_prepare($conn, $DoNukePrefsDBC); mysqli_stmt_bind_param($stmt, "s", $IdxZero); mysqli_stmt_execute($stmt); $affected_rows = mysqli_affected_rows($conn); // 后续可根据$affected_rows的值做自定义逻辑判断
面向对象写法对应调用属性:
$affected_rows = $conn->affected_rows;
需要获取完整的控制台风格响应信息
使用mysqli_info(),该函数会直接返回和MySQL控制台输出格式一致的执行详情字符串,就是你需要的Query OK, 0 rows affected (0.00 sec)这类内容。
面向过程写法示例:
// 执行SQL语句逻辑同上 mysqli_stmt_execute($stmt); $exec_response = mysqli_info($conn); // $exec_response变量中已经存储了完整的执行响应信息,可直接使用
面向对象写法对应调用属性:
$exec_response = $conn->info;
内容的提问来源于stack exchange,提问作者MountainMan
相关产品推荐
相关产品推荐

