12

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

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

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

任何建议将被认真考虑。

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

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

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

4

5 回答 5

26

为此,您需要

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

所以最终的查询看起来像

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

除了上面显示的之外,没有任何用于更新 sql 中的“整行”的神奇命令。而且REPLACE绝对不是您在这里需要的。

于 2012-05-13T22:38:32.547 回答
8

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

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

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

作为一个仅供参考,REPLACE对于唯一字段或复合主键不是自动增量的映射表通常很方便。

于 2012-05-13T22:39:13.397 回答
4

这才是正确的方法。

UPDATE TABLENAME SET COLUMNAME = VALUE, COLUMN2NAME = VALUE, ETC WHERE CONDITION
于 2012-05-13T22:41:30.720 回答
3

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

"UPDATE tablename 
SET column1name = '".$new_value1."', 
    column2name = '".$new_value2."', 
    column3name = '".$new_value3."' 
WHERE columnname = '".$value."'"
于 2012-05-13T22:40:14.533 回答
-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());
于 2015-02-27T22:17:41.547 回答