我想编辑数据库中的一个表。该表有很多数据。 我将展示示例。我需要编写许多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';");
您想要使用特定数据更新一张表中的多行,所以坏消息是您必须一项一项地执行......但您可以改进您的代码。 如果我在你那里,我将创建一个函数,然后我只是调用它,就像
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)
。例如在循环中或在您需要时使用。
如果
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 变量存储在 数组中。
update table1, table2
set table1.column1 = 'valueX',
table2.column2 = 'valueX'
where table1.column = table2.column2;