-5

谁能告诉我@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);
}
4

1 回答 1

2

首先,mysql_*不推荐使用这些功能。mysql_affected_rows()似乎在所有情况下都返回一个整数。-1如果查询失败,则返回。

您真正需要的不是mysql_affected_rows()对竞争条件开放的正确查询。

INSERT INTO table (id, count) VALUES (123, 0) ON DUPLICATE KEY UPDATE count = count + 1

于 2013-06-14T08:19:22.743 回答