0

我想从我的数据库中编辑一个表。那个表有很多数据。我将展示示例。我需要编写许多 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';");
4

3 回答 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)您需要的时间。例如在一个循环中或者只是在你需要的时候。

于 2012-06-28T12:18:56.953 回答
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 变量存储在数组中。

于 2012-06-28T11:55:02.223 回答
-1
update table1,table2 SET table1.column1 = 'valueX',table2.coulumn2 = 'valueX' where table1.column = table2.coulumn2 ;
于 2012-06-28T12:11:18.947 回答