在我的文件表中,我有:
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' "
);
答案 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);