我创建了一个这样的表,
id | option_name | value | user_id
----------------------------------------------
1 | name | Joe | 1
----------------------------------------------
2 | age | 30 | 1
----------------------------------------------
3 | sex | male | 1
----------------------------------------------
4 | name | Jane | 2
----------------------------------------------
5 | age | 28 | 2
----------------------------------------------
6 | sex | female | 2
----------------------------------------------
我想更新与user_id
和option_name
相对应的所有行。
如果user_id == 3
,当我使用option_name
(name
,sex
,age
)作为字段提交表单时,如果没有user_id == 3
行然后插入行,但如果存在行,我想用value
字段的新值更新这些行。
请检查我的代码:http://pastebin.com/THQdYpix
我想减少代码中的查询步骤,任何想法?
答案 0 :(得分:0)
首先检查它是否更新或注意mysql_query()是否返回false然后你可以使用insert查询并执行查询。
答案 1 :(得分:0)
使用INSERT ... ON DUPLICATE KEY UPDATE。如果你想在一个语句中执行此操作,我建议使用INSERT ... ON DUPLICATE KEY UPDATE语法,如下所示:
INSERT INTO table (id, someothervalue) VALUES (1, 'hi mom') ON DUPLICATE KEY UPDATE someothervalue = 'hi mom';
如果没有具有指定键值(主键或唯一键)的现有记录,则将执行初始INSERT语句。如果记录已存在,则执行以下UPDATE语句(someothervalue = 3)。
答案 2 :(得分:0)
以下查询将有效。
REPLACE INTO `table1`
( `name`,`sex`,`age` )
VALUES
( 'Mark', '29', 'male' )
ON DUPLICATE KEY UPDATE user_id=3;