0

有我的代码:

$sql = "INSERT INTO item SET 
    player = '$player', 
    amount = '$amount', 
    item = '$item',
    allowed = '$allowed' ON DUPLICATE KEY UPDATE 
    amount = amount + $amount";

当我执行这个查询时,在数据库中创建新行,尽管它已经存在......

感谢帮助。

4

3 回答 3

2

语法不正确,这个更正的版本:

$sql = "INSERT INTO item SET 
    player = '$player', 
    amount = '$amount', 
    item = '$item',
    allowed = '$allowed' 
    ON DUPLICATE KEY UPDATE 
    amount = `amount` + '$amount' ";

其他因素取决于您的表结构和键

于 2013-03-01T20:26:33.783 回答
2

我会这样做:

$sql = "INSERT INTO DBNAME.item (player, amount, item, allowed) 
        values('$player', '$amount', '$item', '$allowed') 
        ON DUPLICATE KEY UPDATE 
        amount = amount + values(amount);";
于 2013-03-01T20:28:19.780 回答
2

在评论中,您说桌子上没有钥匙。那是个问题。你在问数据库ON DUPLICATE KEY UPDATE,但没有 a UNIQUE KEY,它不知道 aDUPLICATE KEY是什么。

您需要在不想被重复的字段上添加一个UNIQUE KEY(或一个)。PRIMARY KEY

于 2013-03-01T20:36:10.083 回答