似乎这可能是不可能的,但是嘿,我不妨问,我可能是错的.想知道是否有任何perl使用一个MySQL调用更新多行,我正在使用DBI.
任何帮助或反馈将不胜感激,这在MSSQL中通过ASP和ASP.net是可能的,因此想知道是否也可以通过MySQL上的perl.
感谢您的反馈意见!
fri*_*edo 14
首先也是最重要的,你绝对不应该直接将变量插入到SQL字符串中.这留下了SQL注入攻击的可能性.即使这些变量不是来自用户输入,也会留下可能导致数据搞乱的危险错误.
MySQL DBD驱动程序支持多个语句,但默认情况下它被关闭作为安全功能.请参阅DBD :: mysql文档中的mysql_multi_statements" 类方法"部分.
但是,一个更好的解决方案,即同时解决这两个问题并且更加便携,就是使用预处理语句和占位符值.
my $sth = $dbh->prepare("UPDATE LOW_PRIORITY TableName SET E1=?,F1=? WHERE X=?");
Run Code Online (Sandbox Code Playgroud)
然后,在某种循环中获取您的数据:
while( $whatever) {
my ( $EC, $MR, $EM ) = get_the_data();
$sth->execute( $EC, $MR, $EM );
}
Run Code Online (Sandbox Code Playgroud)
您只需准备一次语句,并且DBD驱动程序将替换占位符值(并保证正确引用).
阅读有关DBI文档中占位符的更多信息.