首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mysql affected_rows返回1,但实际的mysql没有更新

Mysql affected_rows返回1,但实际的MySQL没有更新,可能是由于以下原因之一:

  1. 数据库连接问题:首先,确保你的应用程序与MySQL数据库建立了正确的连接。检查连接字符串、用户名、密码等是否正确配置。如果连接失败,affected_rows返回1是因为它只是表示执行了一条SQL语句,但实际上没有更新任何数据。
  2. 条件不匹配:确认你的更新语句中的条件是否正确。如果条件不满足,MySQL将不会更新任何行,但affected_rows仍然会返回1。
  3. 事务回滚:如果在更新之前启动了一个事务,并且在更新之后回滚了事务,那么affected_rows将返回1,但实际上没有更新任何数据。
  4. 数据已经是最新的:如果你的更新语句中的值与数据库中的当前值相同,MySQL将不会执行实际的更新操作,但affected_rows仍然会返回1。
  5. 数据库权限问题:确保你的数据库用户具有足够的权限来执行更新操作。如果权限不足,MySQL将不会更新任何数据,但affected_rows仍然会返回1。

针对以上情况,你可以采取以下措施:

  1. 检查数据库连接配置,确保连接正确建立。
  2. 仔细检查更新语句中的条件,确保它们与数据库中的数据匹配。
  3. 检查是否存在事务回滚操作,确保没有回滚更新操作。
  4. 确认更新语句中的值与数据库中的当前值是否相同。
  5. 检查数据库用户权限,确保具有足够的权限执行更新操作。

对于MySQL数据库的相关产品和推荐,腾讯云提供了云数据库MySQL,它是一种高性能、可扩展的关系型数据库服务。你可以通过腾讯云官网了解更多关于云数据库MySQL的信息:腾讯云云数据库MySQL

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP商品秒杀问题解决方案实例详解【mysql与redis】

解决该问题方案由很多,可以简单分为基于mysql和redis解决方案,redis性能要由于mysql,因此可以承载更高并发量,不过下面介绍方案都是基于单台mysql和redis,更高并发量需要分布式解决方案...$num; } 乐观锁 乐观锁方案在读取数据是并没有加排他锁,而是通过一个每次更新都会自增version字段来解决,多个进程读取到相同num,然后都能更新成功问题。...我们首先get到num值进行第一步判断,避免每次都去更新num值,然后再对num执行decr操作,并判断decr返回值,如果返回值不小于0,这说明decr之前是大于0,用户抢购成功。...redis没有mysql排它锁,但是可以通过一些方式实现排它锁功能,就类似php使用文件锁实现排它锁一样。...setnx实现了exists和set两个指令功能,若给定key已存在,则setnx不做任何动作,返回0;若key不存在,则执行类似set操作,返回1

42330

PHP Mysqli 常用代码集合

PHP5.0开始,不仅可以使用早期mysql数据库扩展函数,还能使用新扩展mysqli技术实现与mysql数据库信息交流,PHPmysqli扩展被封装在在一个类中,它是一种面向对象技术,只能在PHP5...;      受影响行数 $id  = $stmt->insert_id;          当是插入命令时,返回插入行id(自动) 事务处理 在默认情况下,MYSQL是以自动提交(autocommit...)模式运行,这就意味着所执行每一个语句都将立即写入数据库中,如果使用事务安全表格类型,是不希望自动提交行为 事务处理 当执行多条MYSQL命令时,当然希望当其中一条命令出错时,所有的命令都不执行...,返回执行命令之前状态 这就用到事务了 简单运用事务流程 1.写好SQL命令  $sql1 = "insert user(name) values('huang','123456')";  $sql2...$res1 or $mysqli->affected_rows !=1){     $success = false;  }  $res2 = $mysqli->query($sql2);  if(!

1.8K20

PDO 用法学习「建议收藏」

mysqli方法少,常量多 dsn:data source name(数据源) 包括 主机、库名、驱动名 #部分参数可以省略,参数没有顺序 mysql: #最短 会自动调取 php.in 中 mysql.default_host...执行sql语句: exec() 、query()、 perpare(); 1、query用来处理有结果集,如select, 返回 PDOStatement 对象,失败返回false(当为 PDO:...:ERRMODE_SILENT,这也是默认值) 2、exec用来处理有返回影响行数(int),如 insert(插入行数)、 delete(删除行数) 、update(和原数值不等才算),...这种安全措施有助于在脚本意外终止时避免出现不一致情况——如果没有显式地提交事务,那么假设是某个地方出错了,所以执行回滚来保证数据安全。...) 来取得返回行数。

3.7K31

PHP使用pdo实现事务处理操作示例

分享给大家供大家参考,具体如下: 使用事务好处: 举个例子:银行用户A向用户B转账100元,这个操作被分为两个步骤: (1)A账户余额被扣去100。 (2)B账户余额增加100。...如果不使用事务的话,假设(1)执行成功了,而(2)失败了,那用户B没有收到应收款项,而用户A就白白受了损失。...使用事务之后,不论(1)或者(2)哪一步失败,都可以回滚,即双方账户余额恢复到之前状态。...不是所有的数据库都提供了对事务支持,如mysql Myisam 引擎不支持事务,新版本默认使用 innoDB 引擎提供了对事务支持。...,重新开启自动提交 $dbh->setAttribute(PDO::ATTR_AUTOCOMMIT, 1); ?

36410

TiDB 新特性漫谈:悲观事务

); affected_rows = txn.Execute(“UPDATE t SET v = v + 1 WHERE k = 100”); if affected_rows > 0 { A();...} else { B(); } txn.Commit(); 大家注意下,第四行那个判断语句是直接通过上面的 UPDATE 语句返回 affected_rows 来决定到底是执行 A 路径还是 B 路径...,但是聪明朋友肯定看出问题了,在一个乐观事务模型数据库上,在 COMMIT 执行之前,其实是并不知道最终 affected_rows 到底是多少,所以这里值是没有意义,程序有可能进入错误处理流程...这里问题本质是 MySQL 协议支持可交互事务,但是 MySQL没有原生乐观事务支持(MySQL InnoDB 行锁可以认为是悲观锁),所以原生 MySQL 在执行上面这条 UPDATE...时候会先上锁,确认自己 Update 能够完成才会继续,所以返回 affected_rows 是正确

67620

thinkPHP框架乐观锁和悲观锁实例分析

那么乐观锁读取num数量和version版本两个字段,在更新结果时候,我们就要更新条件where version=9这条语句,具体UPDATE goods SET num=num-1,version=...version+1 WHERE version=9 and id=1,这样的话,如果其中一条执行成功后,数据库中version值为10了,所以剩下9个人线程都会失败了。...version=version+1 WHERE version={$version} and id=1"); $affected_rows = $this- mysqli- affected_rows...$affected_rows = $this- mysqli- affected_rows; if($affected_rows == 1){ $this- mysqli- commit...$num; } 乐观锁缺点: 比如可能别人先购买,反而后面的先买到了,这就点不太合理 乐观锁优点: 这可以避免超发现象发生 悲观锁mysql代码: #主要对所在行进行for update select

1.1K31

PHP中MySQLi扩展学习(三)mysqli基本操作

在实例化过程中,我们并没有给 mysqli 构造函数传递任何参数,而是使用 real_connect() 方法来传递数据库服务器信息并建立连接。...$mysqli->select_db('mysql'); 就是这样一个简单 select_db() 方法,就可以帮助我们在代码执行过程中动态地修改所连接数据库。...记住,它返回不是受影响行数,这一点是需要注意。我们如果需要获取受影响行数需要使用 MySQLi 属性 affected_rows 。...它作用是启动结果集检索。也就是说,在 mutli_query() 时候,这些语句并没有马上执行,而是在调用 use_result() 时,才会执行当前这条语句。...总结 光说不练假把式,虽说多语句执行看似很美好,即使在这简单测试代码中,也会出现各种问题,大家一定要自己多尝试一下。

2.9K00

PHP中MySQLi扩展学习(三)mysqli基本操作

在实例化过程中,我们并没有给 mysqli 构造函数传递任何参数,而是使用 real_connect() 方法来传递数据库服务器信息并建立连接。...$mysqli->select_db('mysql'); 就是这样一个简单 select_db() 方法,就可以帮助我们在代码执行过程中动态地修改所连接数据库。...记住,它返回不是受影响行数,这一点是需要注意。我们如果需要获取受影响行数需要使用 MySQLi 属性 affected_rows 。...它作用是启动结果集检索。也就是说,在 mutli_query() 时候,这些语句并没有马上执行,而是在调用 use_result() 时,才会执行当前这条语句。...总结 光说不练假把式,虽说多语句执行看似很美好,即使在这简单测试代码中,也会出现各种问题,大家一定要自己多尝试一下。

2.9K20

DBA福音,SQL审核利器-goinception

,好比一座大厦没有坚实地基支撑,也就无法长期屹立不倒。...goInception是一个集审核、执行、备份及生成回滚语句于一身MySQL运维工具, 通过对执行SQL语法解析,返回基于自定义规则审核结果,并提供执行和备份及生成回滚语句功能。...索引中列,不能重复 BLOB列不能建做KEY 索引长度不能超过767或3072,由实际mysqlinnodb_large_prefix决定 索引名不能是PRIMARY 索引名不能重复 默认值...支持关联更新,inception本身是不支持 提供了更加丰富审核规则选项,并且是基于MySQL5.7,相比于inception来说支持度更好 长期稳定更新,从github上commit记录看作者还是更新得很勤奋...Enjoy MySQL :) ---- 叶老师MySQL核心优化」大课已升级到MySQL 8.0,扫码开启MySQL 8.0修行之旅吧

1.9K40
领券