只有两列,我想仅在menu_id
存在时才更新。否则我想插入一个新行。这是我的疑问:
REPLACE `dol_subs_menu_access`
SET `menu_id` = '{$aVars['menu_item']}',
`mlevels` = '{$sMemLevels}'
每次都会创建一个新行。有什么我想念的吗?
答案 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(不要与字符串替换函数混淆)需要确定它是否替换插入...