是否可以使用 mysql_affected_rows 来获取用户更新时受影响的行数?如果有多个用户更新他们的密码,我需要知道每个用户更新是否成功。因此,如果 3 个用户同时进行更新,即使一个用户更新不成功,mysql_affected_rows 也可能返回 2。是这样吗?我无法同时测试多个用户。这是多么安全。
5 回答
它是安全的,并为您当前的数据库连接返回值(mysql-affected-rows 函数)。
它是安全的。它仅返回有关您自己连接中的最后一个查询的数据。
通过与link_identifier关联的最后一个 INSERT、UPDATE、REPLACE 或 DELETE 查询获取受影响的行数。
由于它是 MySQL C API 的精简包装,我们还可以检查:
my_ulonglong mysql_affected_rows(MYSQL *mysql)
据我所知,它没有在任何地方明确说明,但它确实采用了连接标识符,而且似乎一般模式是所有函数都返回有关特定连接的数据:
从多个客户端同时使用 LAST_INSERT_ID() 和 AUTO_INCREMENT 列是完全有效的。每个客户端都将收到客户端执行的最后一条语句的最后插入 ID 。
无论如何,如果您无法确定获得的结果是否属于您,那将是非常不可用的。
如果您将连接的引用作为参数传递,它特定于该连接,因此即使有同时访问您的脚本的用户也可以安全使用 - 因为他们每个人都将使用单独的连接!请参阅mysql_affected_rows 的文档。
但是请注意,整个 mysql 扩展已被弃用。考虑改用 MySQLi 或 PDO_MySQL!
我用mysql_query("SELECT ROW_COUNT();");
. 我总是发现它工作得更好。
它是安全的,因为它是特定于连接的。