如何判断mysqli的查询有无成功执行?CRUD
想问问
$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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
失败,判断 result===false 就知道是不是成功了啊
1、优先处理异常。
2、CUD 操作返回为成功操作的记录数,失败时返回 false ,判断是否 全等于 false 即可。
3、R操作返回为结果集,判断结果集是否为空。
多看文档
基于mysqli/pdo的相互未兼容的状态, 我建议做二次封装, 全部用"返回受上一个 SQL 语句影响的行数" 来判断是否成功.
pdo 读类操作需要判断: PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数
pdo 写类操作PDO::exec() 在一个单独的函数调用中执行一条 SQL 语句,返回受此语句影响的行数
pdo可以重新封装一个query, 统一返回影响行数字类型.. 并且以try纠错..
mysqli
虽然mysqli_query大致有对返回定义. 但事实上需要大量测试才可以验证, 为了更兼容,
个人建议在返回对象时, 对mysqli_num_rows( mysqli_result $result) : int进行判断.
在返回布尔值时, 直接对mysqli_affected_rows() 进行判断. 两个方法都100%返回数字型.
代码编写时, 均用try做纠错处理...