插入...的最新情况:多次插入

插入...的最新情况:多次插入

问题描述:

在我的文档表格重复键我有: 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' " 
); 
+1

你能告诉的'SHOW CREATE TABLE Document' – 2012-04-22 21:08:52

+0

全表代码的输出? – user1296762 2012-04-22 21:27:50

货物崇拜编程?使用sprintf()没有任何%占位符只是....错误。另外,为什么在更新的字段上添加?

MySQL使用concat()进行串联。 +纯属数学运算。做'a' + 'a'不给你aa,你会得到0

+0

我确实有%的占位符,但它没有工作,但可以把后面。编辑 – user1296762 2012-04-22 21:18:50

如果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); 
+0

如果我有会议运行我将需要添加像'WHERE id ='$ _ SESSION [user_id]''什么都没有发生代码高于 – user1296762 2012-04-22 21:23:42

+0

现在我改变了查询到the_query,它只是增加了另外一行 – user1296762 2012-04-22 21:27:24

+0

ok,那么你应该添加唯一字段:'ALTER TABLE文件ADD UNIQUE(user_id)' – 2012-04-22 21:33:59