我有点担心我的一个mysql查询...以下查询接收变量$ DB_id ...如果已存在具有该主键的行,则查询执行更新。
$this->db->query(" INSERT INTO modules_text
( module_id,
module_content,
module_index
)
VALUES ( '{$DB_id}',
'{$content['text']}',
'{$index}'
)
ON DUPLICATE KEY
UPDATE module_content = '{$content['text']}',
module_index = '{$index}'
");
现在关注我的事情......受影响的行实际上属于用户是没有关系的。我想在UPDATE部分添加一个where语句,或者首先对允许受影响的行进行subselecion。类似的东西:
[...]
ON DUPLICATE KEY
UPDATE module_content = '{$content['text']}',
module_index = '{$index}'
WHERE module_post_id = '{$post]}'
这是不可能的......直到现在我还没有找到解决方案......任何帮助都会非常感激...感谢很多!!!!!
Saludos Sacha!
答案 0 :(得分:0)
这不是ON DUPLICATE KEY的工作原理。只有当表的UNIQUE键或PRIMARY键匹配时,才会发生INSERT的更新部分。 (即:UNIQUE / PRIMARY键实际上是WHERE子句。)
有关详细信息,请参阅完整的MySQL docs。