多行更新或插入mysql

时间:2015-02-10 06:00:59

标签: php mysql

我创建了一个这样的表,

   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_idoption_name相对应的所有行。

如果user_id == 3,当我使用option_namenamesexage)作为字段提交表单时,如果没有user_id == 3行然后插入行,但如果存在行,我想用value字段的新值更新这些行。

请检查我的代码:http://pastebin.com/THQdYpix

我想减少代码中的查询步骤,任何想法?

3 个答案:

答案 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;