我想从我的数据库中编辑一个表。该表有很多数据。 我将展示样本。我是否需要编写许多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';");
答案 0 :(得分: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)
。例如在一个循环中或者只在你需要的时候。
答案 1 :(得分: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 prepared statement,尤其是。因为你可能容易受到SQL注入攻击)。如果您不知道我在说什么,或者如何解决它,请阅读Bobby Tables的故事。
将所有内容放在一起(使用PDO代替您正在使用的deprecated MySQL extension:
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);
请注意,您也可以考虑在arrays中存储1..30变量。
答案 2 :(得分:-1)
update table1,table2 SET table1.column1 = 'valueX',table2.coulumn2 = 'valueX' where table1.column = table2.coulumn2 ;