可能性@mysql_affected_rows返回值?

时间:2013-06-14 08:08:40

标签: php mysql

任何人都可以告诉我@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);
}

1 个答案:

答案 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