Php 更新MySQL中的整行

Php 更新MySQL中的整行,php,mysql,Php,Mysql,我是MySQL新手,我想用新数组更新MySQL中的整行,到目前为止,所有更新查询的示例都涉及到为该列指定列名和新值,如下所示: "UPDATE tablename SET columnname = '".$new_value."' WHERE columnname = '".$value."'"; 如何使用更新查询更新整个记录,还是使用替换查询 如有任何建议,将不胜感激 编辑:是否存在不需要指定所有列名和新列值的查询 基本上,我希望有一个如下所示的查询: "UPDATE tablename S

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

"UPDATE tablename SET columnname = '".$new_value."' WHERE columnname = '".$value."'";
如何使用更新查询更新整个记录,还是使用替换查询

如有任何建议,将不胜感激

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

基本上,我希望有一个如下所示的查询:

"UPDATE tablename SET columnname = '".$new_value."' WHERE columnname = '".$value."'";
使用此数组更新entirerow,其中primarykeycolumn='thisvalue'

要执行此操作,您需要

  • 枚举所有值
  • 了解主键列和值
  • 因此,最终的查询如下所示

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

    除了上面显示的我之外,没有任何神奇的命令可以更新sql中的“整行”。而
    REPLACE
    肯定不是您在这里需要的。

    这取决于您是否想保留ID,假设ID是
    自动递增的

    REPLACE INTO mytable VALUES(新数组)…
    也会更新ID,因为它实际上只是模拟了
    DELETE
    INSERT

    如果要保留ID,请使用
    updatemytable SET foo='bar',baz='bat',其中ID=12


    仅供参考,
    REPLACE
    通常很方便映射表,其中唯一字段或复合主键不是自动递增的。

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

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

    这是正确的方法

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

    是的,有一个相似的方法

    $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());
    
    $updateSQL=sprintf(“更新酒店
    设置酒店名称=%s,联系人=%s
    酒店id=%s所在地,
    $\u POST[“酒店名称”],
    $\u POST['contact\u person\u 1',
    $_POST['hotel_id']); mysql\u select\u db($database\u hotelbookingryan,$hotelbookingryan); $Result1=mysql\u query($updateSQL,$hotelbookingryan)或die(mysql\u error());
    而且当有外键指向此表时(特别是定义了删除级联上的
    操作),使用
    REPLACE
    也不好。是的,很遗憾id是自动递增的,我需要保留这些OK谢谢,那个么我想我应该停止偷懒,开始输入那个些列。除非你想让他成为博士后,否则你根本不需要提及:)@AlienWebguy:不想让任何人成为博士后。MySQL允许在
    WHERE
    子句中使用这种语法:
    WHERE(a,b)=(2,3)
    在MySQL(以及一般的SQL)中有效。但是它还没有在
    SET
    子句中实现。@ypercube你和zerkms是同一个人吗?我知道语法:)@ypercube为什么要在别人的答案中添加代码段?看起来很奇怪也不合适。谢谢你的回答,我只希望他们的问题能简短一些*/