MySQL如何确认update,delete,insert语句成功执行?

Ningsy 2015-09-22 12:36:08
如题,现在一直通过mysql_affected_rows()在判断,这样的话就造成几乎每一句update,delete,insert后面必然要跟一句
if(mysql_affected_rows()!=1)
{
报错
}

请问有什么更简便的办法吗?
...全文
2251 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wisond_liu 2018-06-29
  • 打赏
  • 举报
回复
mysql数据库中语法是这样写的:

IF(ROW_COUNT() > 0) THEN
wisond_liu 2018-06-29
  • 打赏
  • 举报
回复
IF(ROW_COUNT() > 0) THEN
Ningsy 2015-09-24
  • 打赏
  • 举报
回复
引用 14 楼 xuzuning 的回复:
如果你不放心 update ... set money=money-1 会真实执行的话 那么你是否需要再 select 一下,确认 money 减少了 1,而不是减少了 100 呢? $result = mysql_query("update ……") 只有在 sql 指令是错误的情况下,才会返回 false 所以并不需要去试
好的,感觉你说的听起来比较靠谱,谢谢。
码无边 2015-09-23
  • 打赏
  • 举报
回复

$result = mysql_query("update ……")
if ($result !== false){
    echo "exec success";
}else{
    echo "exec error:".mysql_error():
}
xuzuning 2015-09-23
  • 打赏
  • 举报
回复
如果你不放心 update ... set money=money-1 会真实执行的话 那么你是否需要再 select 一下,确认 money 减少了 1,而不是减少了 100 呢? $result = mysql_query("update ……") 只有在 sql 指令是错误的情况下,才会返回 false 所以并不需要去试
xuzuning 2015-09-23
  • 打赏
  • 举报
回复
如果你不放心 update ... set money=money-1 会真实执行的话 那么你是否需要再 select 一下,确认 money 减少了 1,而不是减少了 100 呢? $result = mysql_query("update ……") 只有在 sql 指令是错误的情况下,才会返回 false 所以并不需要去试
Ningsy 2015-09-23
  • 打赏
  • 举报
回复
引用 11 楼 zy205817 的回复:

$result = mysql_query("update ……")
if ($result !== false){
    echo "exec success";
}else{
    echo "exec error:".mysql_error():
}
同上,谢谢,准备试一下效果
Ningsy 2015-09-23
  • 打赏
  • 举报
回复
引用 10 楼 misakaqunianxiatian 的回复:
[quote=引用 9 楼 u012567359 的回复:] [quote=引用 8 楼 xuzuning 的回复:] update 没有符合条件的记录,就不会修改,如果被修改的值和原值一样,则修改不会真正发生 delete 没有符合条件的记录,就不会删除,如果有多条符合条件的记录,自然也就一并删除了 insert 只会影响一条,哪怕是用缩略写法的 insert 语句插入了 100 条 看不出这与事务有什么关系
想了一下,你说的有道理。 我把我的疑问举个例子: 比如用户要用虚拟货币购买虚拟物品,在update ... set money= ... where user_id=... 这条语句执行后,需不需要mysql_affected_rows()来验证成功update了1行呢?我担心没真正update到money字段,然后就执行了下面给该用户添加虚拟物品的业务 如果在之前执行了select money from ... for update,就能保证万无一失吗?[/quote] 直接if (update操作....){购买成功...}else{购买失败....}不就好了,update操作失败返回的是false[/quote] 好的我决定试一下,看起来比mysql_affected_rows简洁,不知道效果上有没有什么细微差别
xuzuning 2015-09-22
  • 打赏
  • 举报
回复
mysql_affected_rows 不是用于检查执行是否成功的 而是用于观察相关 sql 指令对多少记录进行了操作
misaka去年夏天 2015-09-22
  • 打赏
  • 举报
回复
引用 9 楼 u012567359 的回复:
[quote=引用 8 楼 xuzuning 的回复:] update 没有符合条件的记录,就不会修改,如果被修改的值和原值一样,则修改不会真正发生 delete 没有符合条件的记录,就不会删除,如果有多条符合条件的记录,自然也就一并删除了 insert 只会影响一条,哪怕是用缩略写法的 insert 语句插入了 100 条 看不出这与事务有什么关系
想了一下,你说的有道理。 我把我的疑问举个例子: 比如用户要用虚拟货币购买虚拟物品,在update ... set money= ... where user_id=... 这条语句执行后,需不需要mysql_affected_rows()来验证成功update了1行呢?我担心没真正update到money字段,然后就执行了下面给该用户添加虚拟物品的业务 如果在之前执行了select money from ... for update,就能保证万无一失吗?[/quote] 直接if (update操作....){购买成功...}else{购买失败....}不就好了,update操作失败返回的是false
Ningsy 2015-09-22
  • 打赏
  • 举报
回复
引用 8 楼 xuzuning 的回复:
update 没有符合条件的记录,就不会修改,如果被修改的值和原值一样,则修改不会真正发生 delete 没有符合条件的记录,就不会删除,如果有多条符合条件的记录,自然也就一并删除了 insert 只会影响一条,哪怕是用缩略写法的 insert 语句插入了 100 条 看不出这与事务有什么关系
想了一下,你说的有道理。 我把我的疑问举个例子: 比如用户要用虚拟货币购买虚拟物品,在update ... set money= ... where user_id=... 这条语句执行后,需不需要mysql_affected_rows()来验证成功update了1行呢?我担心没真正update到money字段,然后就执行了下面给该用户添加虚拟物品的业务 如果在之前执行了select money from ... for update,就能保证万无一失吗?
xuzuning 2015-09-22
  • 打赏
  • 举报
回复
update 没有符合条件的记录,就不会修改,如果被修改的值和原值一样,则修改不会真正发生 delete 没有符合条件的记录,就不会删除,如果有多条符合条件的记录,自然也就一并删除了 insert 只会影响一条,哪怕是用缩略写法的 insert 语句插入了 100 条 看不出这与事务有什么关系
Ningsy 2015-09-22
  • 打赏
  • 举报
回复
引用 楼主 u012567359 的回复:
如题,现在一直通过mysql_affected_rows()在判断,这样的话就造成几乎每一句update,delete,insert后面必然要跟一句 if(mysql_affected_rows()!=1) { 报错 } 请问有什么更简便的办法吗?
补充一下,我是要判断update,delete,insert语句至少影响了1行,似乎大部分情况下都需要这样的判断逻辑 就是因为即使update,delete,insert影响了0行,事务也不会回滚,所以会产生这个问题
Ningsy 2015-09-22
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
无论影响多少行(包括0行)都不是错误
这我当然知道。。。
一起混吧 2015-09-22
  • 打赏
  • 举报
回复
判断影响了几行mysql_affected_rows() 肯定是要执行的。
xuzuning 2015-09-22
  • 打赏
  • 举报
回复
无论影响多少行(包括0行)都不是错误
Ningsy 2015-09-22
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
mysql_affected_rows 不是用于检查执行是否成功的 而是用于观察相关 sql 指令对多少记录进行了操作
是我表述问题。我就是想判断insert,delete,update语句成功地影响了至少1行
misaka去年夏天 2015-09-22
  • 打赏
  • 举报
回复
直接
if(执行sql语句){.....}else{......}

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧