0

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

2 回答 2

0

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

MySQLconcat()用于连接。+纯粹是数学运算。做'a' + 'a'不给你aa,你会得到0

于 2012-04-22T21:09:01.963 回答
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);
于 2012-04-22T21:13:53.937 回答