【发布时间】:2011-07-17 08:55:09
【问题描述】:
执行 SQL 语句时,如
插入table ...在重复密钥更新...
我依靠 mysql_affected_rows() 来确定是否执行了插入或更新。
作为http://dev.mysql.com/doc/refman/5.1/en/mysql-affected-rows.html 上的mysql 站点,它声明:
对于 INSERT ... ON DUPLICATE KEY UPDATE 语句,如果将行作为新行插入,则受影响的行值为 1,如果更新现有行,则值为 2。
在我们升级到 MySQL 5.1.16 之前一切正常,当时许多查询现在都有 mysql_affected_rows() 返回 MINUS ONE (-1)
在http://dev.mysql.com/doc/refman/5.1/en/mysql-store-result.html 上的 MySQL 站点上建议的解决方案是在每次对 select 查询执行函数 mysql_query() 后调用函数 mysql_store_result()。
但是,PHP 似乎没有定义这样的函数。
如何使用 PHP 和 MySQL 5.1.16 让 mysql_affected_rows() 正常工作?
【问题讨论】:
-
你在使用准备好的语句吗?顺便说一句,PHP 有 store_result 函数 - php.net/manual/en/mysqli.store-result.php,但 store_result 在 SELECT 之后调用,而不是在 INSERT 之后。 -1 表示查询返回错误,或者对于 SELECT 查询,mysql_affected_rows() 在调用 mysql_store_result() 之前被调用
-
我也有这个问题...
标签: php mysql rows-affected