【发布时间】:2013-06-10 19:59:45
【问题描述】:
谁能告诉我@mysql_affected_rows 返回值的所有可能性。因为我正在检查if(@mysql_affected_rows())。在大多数情况下,它返回 1(成功)或 0(不成功)。所以它工作正常。但在某些情况下,如果更新不成功,它会返回 0 以外的其他值。
我不知道它会返回什么。但它进入了循环。在循环内部我试图插入数据。但它为此在 SQL 上显示重复错误。请检查以下代码供您参考,
$sqlU = sprintf("UPDATE %s SET count = count + 1
WHERE id = %d", 'table', 123);
mysql_query($sqlU);
if(!@mysql_affected_rows()) {
$sqlI = sprintf("INSERT INTO %s (id) VALUES (%d)",
'table', 123);
mysql_query($sqlI);
}
【问题讨论】:
-
你为什么使用
if(!@mysql_affected_rows()) {? -
PHP 文档告诉您它会返回受影响的行数或失败时返回 -1.. 在不询问 SO 的情况下获取信息并不难。另一方面,您正在使用一种已弃用的方式来处理数据库通信,而且您没有检查您的查询是否成功——基本上,您的代码中发生了太多不好的事情。你应该看看 PDO。
-
您的代码也毫无意义。为什么
UPDATE一行然后INSERT又是同一行? -
既然你已经得到了正确的答案,为什么还要在两个小时内两次问同一个问题?