插入...的最新情况:多次插入
在我的文档表格重复键我有: 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' "
);
货物崇拜编程?使用sprintf()没有任何%
占位符只是....错误。另外,为什么在更新的字段上添加?
MySQL使用concat()
进行串联。 +
纯属数学运算。做'a' + 'a'
不给你aa
,你会得到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);
如果我有会议运行我将需要添加像'WHERE id ='$ _ SESSION [user_id]''什么都没有发生代码高于 – user1296762 2012-04-22 21:23:42
现在我改变了查询到the_query,它只是增加了另外一行 – user1296762 2012-04-22 21:27:24
ok,那么你应该添加唯一字段:'ALTER TABLE文件ADD UNIQUE(user_id)' – 2012-04-22 21:33:59
你能告诉的'SHOW CREATE TABLE Document' – 2012-04-22 21:08:52
全表代码的输出? – user1296762 2012-04-22 21:27:50