我是MySQL新手,我想用新数组更新MySQL中的整行,到目前为止,Update查询的所有示例都涉及为该列指定列名和新值,如下所示: / p>
"UPDATE tablename SET columnname = '".$new_value."' WHERE columnname = '".$value."'";
如何使用更新查询更新整个记录,还是应该使用替换查询?
任何建议都将受到赞赏。
编辑:是否有一个查询不需要指定所有列名和新列值?
基本上我想要一个看起来像这样的查询:
使用thisarray更新整个行,其中primarykeycolumn ='thisvalue'
答案 0 :(得分:22)
要做到这一点,你需要
所以最后的查询看起来像是
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,因为它实际上只是模拟DELETE
和INSERT
。
如果您想保留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());