SQL REPLACE无效

时间:2010-10-04 17:41:56

标签: php sql mysql

只有两列,我想仅在menu_id存在时才更新。否则我想插入一个新行。这是我的疑问:

REPLACE `dol_subs_menu_access` 
SET `menu_id` = '{$aVars['menu_item']}',
`mlevels` = '{$sMemLevels}'

每次都会创建一个新行。有什么我想念的吗?

2 个答案:

答案 0 :(得分:2)

您可能需要查看mySQL's ON DUPLICATE KEY syntax。这将允许您插入记录或更新记录(如果已存在)。您需要在查询中包含主键。

这是来自其文档页面的示例查询:

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

我认为你的查询看起来会像这样(尽管先测试一下)

INSERT INTO `dol_subs_menu_access` (menu_id,mlevels) 
       VALUES ('{$aVars['menu_item']}','{$sMemLevels}')
ON DUPLICATE KEY UPDATE mlevelsMemLevels='{$sMemLevels}';

答案 1 :(得分:2)

您的对帐单中的任何一列是否为主键?我的猜测是它们不是,REPLACE statement(不要与字符串替换函数混淆)需要确定它是否替换插入...