我可以用php进行多次更新SQL吗?

问题描述 投票:0回答:3

我想编辑数据库中的一个表。该表有很多数据。 我将展示示例。我需要编写许多mysql更新语句吗?还有其他方法可以只编写一个语句吗?我是php初学者?谢谢我所有的朋友。对不起我的英语。

        mysql_query("UPDATE `mytablename` SET `mobiletitle` = '$mobiletitle1',
        `mobilepublished` = '1',
        `mobiletext` = '$mobilefulltext1',
         WHERE `id` ='$id1';");

           mysql_query("UPDATE `mytablename` SET `mobiletitle` = '$mobiletitle2',
        `mobilepublished` = '1',
        `mobiletext` = '$mobilefulltext2',
         WHERE `id` ='$id2';");

        mysql_query("UPDATE `mytablename` SET `mobiletitle` = '$mobiletitle3',
        `mobilepublished` = '1',
        `mobiletext` = '$mobilefulltext3',
         WHERE `id` ='$id3';");
   etc.............
        mysql_query("UPDATE `mytablename` SET `mobiletitle` = '$mobiletitle30',
        `mobilepublished` = '1',
        `mobiletext` = '$mobilefulltext30',
         WHERE `id` ='$id30';");
php mysql
3个回答
1
投票

您想要使用特定数据更新一张表中的多行,所以坏消息是您必须一项一项地执行......但您可以改进您的代码。 如果我在你那里,我将创建一个函数,然后我只是调用它,就像

function update_my_data($movilefilltex1,$id1){

mysql_query("UPDATE `mytablename` SET `mobiletitle` = '$mobiletitle1',
        `mobilepublished` = '1',
        `mobiletext` = '$mobilefulltext1',
         WHERE `id` ='$id1';");
.......


}

因此,要进行多次插入,您可以根据需要调用

update_my_data(value1,valu2)
。例如在循环中或在您需要时使用。


0
投票

如果

UNIQUE
上有
id
索引(如果是您的
PRIMARY KEY
也会有),您可以使用
INSERT ... ON DUPLICATE KEY UPDATE
:

INSERT INTO mytablename (id, mobiletitle, mobilepublished, mobiletext) VALUES
  ('$id1', '$mobiletitle1', 1, '$mobilefulltext1'),
  ('$id2', '$mobiletitle2', 1, '$mobilefulltext2'),
  -- etc.
ON DUPLICATE KEY UPDATE
  mobiletitle     = VALUES(mobiletitle),
  mobilepublished = VALUES(mobilepublished)
  mobiletext      = VALUES(mobiletext);

请注意,如果新记录尚不存在,这当然会插入新记录;而您的多个

UPDATE
命令方法不会(它会引发错误)。

无论哪种情况,您都可以在 PHP 中的循环内动态构建/执行 SQL。

我还要提醒您,最好考虑将变量作为参数传递给 MySQL 准备好的语句特别是如果这些变量的内容超出了您的控制范围(因为您可能容易受到 SQL 注入的攻击) )。 如果您不知道我在说什么或如何解决它,请阅读Bobby Tables的故事。

将它们放在一起(使用 PDO 而不是您正在使用的 已弃用的 MySQL 扩展):

for ($i = 1; $i <= 30; $i++) {
  $sqls[] = '(?, ?, 1, ?)';
  $arr[] = ${"id$i"};
  $arr[] = ${"mobiletitle$i"};
  $arr[] = ${"mobilefulltext$i"};
}

$sql = 'INSERT INTO mytablename (id, mobiletitle, mobilepublished, mobiletext)
        VALUES
   ' .    implode(',', $sqls)
     . 'ON DUPLICATE KEY UPDATE
          mobiletitle     = VALUES(mobiletitle),
          mobilepublished = VALUES(mobilepublished)
          mobiletext      = VALUES(mobiletext)';

$db = new PDO("mysql:dbname=$db", $user, $password);
$qry = $db->prepare($sql);
$qry->execute($arr);

请注意,您还可以考虑将 1..30 变量存储在 数组中。


-1
投票
update table1, table2 
set table1.column1 = 'valueX',
    table2.column2 = 'valueX' 
where table1.column = table2.column2;
© www.soinside.com 2019 - 2024. All rights reserved.