更新MySQL中的整行

时间:2012-05-13 22:36:23

标签: php mysql

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

"UPDATE tablename SET columnname = '".$new_value."' WHERE columnname = '".$value."'";

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

任何建议都将受到赞赏。

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

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

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

5 个答案:

答案 0 :(得分:22)

要做到这一点,你需要

  1. 枚举所有值
  2. 了解主键列和值
  3. 所以最后的查询看起来像是

    UPDATE tablename
       SET col1 = 'val1', col2 = 'val2' ...
     WHERE id = id_value
    

    除了上面显示的内容之外,没有任何魔术命令用于更新sql中的“整行”。 REPLACE绝对不是你需要的。

答案 1 :(得分: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通常可以方便地映射唯一字段或复合主键不是自动增量的表。

答案 2 :(得分:2)

您当然可以在一个查询中完成所有操作。你只需添加更多this =用逗号分隔的子句:

"UPDATE tablename 
SET column1name = '".$new_value1."', 
    column2name = '".$new_value2."', 
    column3name = '".$new_value3."' 
WHERE columnname = '".$value."'"

答案 3 :(得分:2)

这是正确的方法。

UPDATE TABLENAME SET COLUMNAME = VALUE, COLUMN2NAME = VALUE, ETC WHERE CONDITION

答案 4 :(得分:-2)

是的,有类似的方式...

$updateSQL = sprintf("UPDATE hotel <br>SET hotel_name=%s, contact_person_1=%s <br>WHERE hotel_id=%s",<br>
                       $_POST['hotel_name'],<br>
                       $_POST['contact_person_1'],<br>
                       $_POST['hotel_id']);

mysql_select_db($database_hotelbookingryan, $hotelbookingryan);
$Result1 = mysql_query($updateSQL, $hotelbookingryan) or die(mysql_error());