0

是否可以使用 mysql_affected_rows 来获取用户更新时受影响的行数?如果有多个用户更新他们的密码,我需要知道每个用户更新是否成功。因此,如果 3 个用户同时进行更新,即使一个用户更新不成功,mysql_affected_rows 也可能返回 2。是这样吗?我无法同时测试多个用户。这是多么安全。

4

5 回答 5

2

它是安全的,并为您当前的数据库连接返回值(mysql-affected-rows 函数)。

于 2012-08-23T09:26:03.847 回答
1

它是安全的。它仅返回有关您自己连接中的最后一个查询的数据。

PHP 文档(感谢Fluffeh):

通过与link_identifier关联的最后一个 INSERT、UPDATE、REPLACE 或 DELETE 查询获取受影响的行数。

由于它是 MySQL C API 的精简包装,我们还可以检查

my_ulonglong mysql_affected_rows(MYSQL *mysql)

据我所知,它没有在任何地方明确说明,但它确实采用了连接标识符,而且似乎一般模式是所有函数都返回有关特定连接的数据:

从多个客户端同时使用 LAST_INSERT_ID() 和 AUTO_INCREMENT 列是完全有效的。每个客户端都将收到客户端执行的最后一条语句最后插入 ID 。

无论如何,如果您无法确定获得的结果是否属于您,那将是非常不可用的。

于 2012-08-23T09:25:02.173 回答
0

如果您将连接的引用作为参数传递,它特定于该连接,因此即使有同时访问您的脚本的用户也可以安全使用 - 因为他们每个人都将使用单独的连接!请参阅mysql_affected_rows 的文档

但是请注意,整个 mysql 扩展已被弃用。考虑改用 MySQLi 或 PDO_MySQL!

于 2012-08-23T09:27:53.477 回答
0

我用mysql_query("SELECT ROW_COUNT();");. 我总是发现它工作得更好。

于 2012-08-23T09:28:52.470 回答
0

它是安全的,因为它是特定于连接的。

于 2012-08-23T09:25:05.103 回答