为什么不用分号连接多个MySQL查询与Perl DBI一起使用?
作者:互联网
我想使用DBI将值插入到两个单独的MySQL表中.我尝试通过插入一个将两个工作INSERT查询合并为一个;它们之间:
$dbh->do(q{
INSERT INTO `testA`(test) values('testvalue111');
INSERT INTO `testB`(test) values('testvalue222');
});
但我总是得到一个错误:
Syntactic error in “INSERT INTO `testB`(test) values(‘testvalue222 …”
如果我将查询分成两个单独的do调用,它就可以工作.但组合查询在phpMyAdmin中工作正常.为什么它在Perl中失败?
解决方法:
您需要在connect调用中设置一个选项以启用此选项.从the docs开始:
mysql_multi_statements
As of MySQL 4.1, support for multiple statements seperated by a semicolon (;) may be enabled by using this option. Enabling this option may cause problems if server-side prepared statements are also enabled.
它默认是禁用的,并且可能应该保持未设置状态 – 这是SQL注入的一个很大的途径(特别是如果你没有使用绑定,你应该阅读它).
标签:dbi,mysql,perl 来源: https://codeday.me/bug/20190901/1784299.html