任何人都可以告诉我@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);
}
答案 0 :(得分:2)
首先,不推荐使用mysql_*
函数。 mysql_affected_rows()
似乎在所有情况下都返回一个整数。如果查询失败,则返回-1
。
您真正需要的是mysql_affected_rows()
,而不是竞争条件,这是一个正确的查询。
INSERT INTO table (id, count) VALUES (123, 0) ON DUPLICATE KEY UPDATE count = count + 1