更新MySQL中的整行

gra*_*per 12 php mysql

我是MySQL新手,我想用新数组更新MySQL中的整行,到目前为止,Update查询的所有示例都涉及为该列指定列名和新值,如下所示:

"UPDATE tablename SET columnname = '".$new_value."' WHERE columnname = '".$value."'";
Run Code Online (Sandbox Code Playgroud)

如何使用更新查询更新整个记录,还是应该使用替换查询?

任何建议将被认真考虑.

编辑:是否有一个查询不需要指定所有列名和新列值?

基本上我想要一个看起来像这样的查询:

使用thisarray更新整个行,其中primarykeycolumn ='thisvalue'

zer*_*kms 24

要做到这一点你需要

  1. 枚举所有值
  2. 知道主键列和值

所以最终的查询看起来像

UPDATE tablename
   SET col1 = 'val1', col2 = 'val2' ...
 WHERE id = id_value
Run Code Online (Sandbox Code Playgroud)

除了上面显示的内容之外,没有任何魔术命令用于更新sql中的"整行".而REPLACE绝对不是什么您这里需要.

  • 好的,谢谢,那么我想我应该不再偷懒,开始输入这些列。 (2认同)

Ali*_*guy 8

这取决于您是否要保留ID,假设ID为autoincrement.

REPLACE INTO mytable VALUES( new array ) ....也将更新ID,因为它实际上只是模拟一个DELETEINSERT.

如果要保留ID,请使用 UPDATE mytable SET foo='bar', baz='bat' WHERE id=12

作为FYI,REPLACE通常方便映射表,其中唯一字段或复合主键不是自动增量.

  • 当外键指向此表时(尤其是定义了"ON DELETE CASCADE"操作),使用`REPLACE`也不好. (2认同)