合并SQL UPDATE语句

4

我正在尝试合并这五个更新语句。我相信这很简单,但我是SQL的新手,无法理清逻辑。

$usqlM1 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM1']."' WHERE mcID='M1';"
$usqlM2 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM2']."' WHERE mcID='M2';";
$usqlM3 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM3']."' WHERE mcID='M3';";
$usqlM4 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM4']."' WHERE mcID='M4';";
$usqlM5 = "UPDATE tblmaincircles SET mcName= '".$_POST['mcNameM5']."' WHERE mcID='M5';";

任何帮助都将是极好的。提前感谢!
1个回答

8

可以使用CASE语句来实现。你可以添加一个where子句,这样系统就不需要评估每个记录,如果MCID被索引,还可以提高性能。

UPDATE tblmaincircle set mcname = case when mcid = 'M1' then 'McNameM1'
                                       when mcid = 'M2' then 'McNameM2'
                                       when mcid = 'M3' then 'McNameM3'
                                       when mcid = 'M4' then 'McNameM4'
                                       when mcid = 'M5' then 'McNameM5' end
where mcid in ('M1','M2','M3','M4','M5');

1
@Craig Howell:在这种情况下,您不能使用预处理语句,但是您应该对提交的变量进行清理以避免 SQL 注入。 - geco17
@WilliamBurnham,你有没有一些好的链接可以用来清理POST变量。我听说过这个问题,希望在未来的开发中能够注意到它。 - Craig Howell
1
@Craig Howell:如果你直接查看PHP手册,你可以找到有关变量清理和SQL注入的信息:http://php.net/manual/en/filter.filters.sanitize.php,http://php.net/manual/en/security.database.sql-injection.php。 - geco17

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接