插入...重复键更新 - 重复插入

时间:2012-04-22 21:05:50

标签: php mysql

在我的文件表中,我有: id (auto int index), user_id (P.key and links to other table), Doc_Name, abstract

当我使用下面的代码时,它只是插入另一行,所以当它应该更新时,我有两个user_id相同。显然,id只是在数字上继续,因为它是auto int,我不确定这是否与为什么它不起作用有关。

 $the_query = sprintf("INSERT INTO `document` (`user_id`,`Doc_Name`,`abstract`)
 VALUES ('%d','%s','%s')",'$user_id', '$Doc_Name', '$abstract')
 ON DUPLICATE KEY UPDATE
 user_id=user_id+'$user_id',
 Doc_Name=Doc_Name+'$Doc_Name',
 abstract=abstract+'$abstract' "
 );

2 个答案:

答案 0 :(得分:0)

货物崇拜节目?使用没有任何%占位符的sprintf()只是......错误。同样,为什么要在更新的字段中添加?

MySQL使用concat()进行连接。 +纯粹是一种数学运算。如果'a' + 'a'没有给您aa,您将获得0

答案 1 :(得分:0)

如果user_id是表格中的唯一字段,则您的查询应如下所示:

$query = sprintf("
INSERT INTO
    `document`(`user_id`, `Doc_Name`, `abstract`)
VALUES
    ('%s', '%s', '%s')
ON DUPLICATE KEY UPDATE
    `Doc_Name` = VALUES(`Doc_Name`),
    `abstract` = VALUES(`abstract`)
", $user_id, $Doc_Name, $abstract);