通过Perl在MYSQL中插入字符串
我遇到的问题是,我让一个用户输入一个字符串。。。可以小于156个字符,如果字符串中没有撇号或引号,DBI语句将完美地插入字符串 这很好->我在工作! 这没用->我没用 要插入,我使用以下代码:通过Perl在MYSQL中插入字符串,mysql,string,perl,dbi,Mysql,String,Perl,Dbi,我遇到的问题是,我让一个用户输入一个字符串。。。可以小于156个字符,如果字符串中没有撇号或引号,DBI语句将完美地插入字符串 这很好->我在工作! 这没用->我没用 要插入,我使用以下代码: $sth = $dbh->prepare("INSERT INTO table VALUES('$var1','$var2','$var3')"); $sth->execute(); 我知道Perl用“”和“”插入不同的字符串,但我的程序在尝试时抛出了一个错误。我还尝试使用联
$sth = $dbh->prepare("INSERT INTO table VALUES('$var1','$var2','$var3')");
$sth->execute();
我知道Perl用“”和“”插入不同的字符串,但我的程序在尝试时抛出了一个错误。我还尝试使用联接,使用“”标记将prepare语句联接在一起。如果需要的话,存储155个字符的变量是$var3,所有3个都是VARCHAR属性。有什么建议吗?您需要转义变量。 正是这种疏忽,黑客利用它来执行SQL注入攻击:阅读可怜的little的故事。事实上,您确实应该避免使用预先准备好的语句来评估SQL变量:
$sth = $dbh->prepare('INSERT INTO table VALUES(?, ?, ?)');
$sth->execute($var1, $var2, $var3);
您需要转义变量。 正是这种疏忽,黑客利用它来执行SQL注入攻击:阅读可怜的little的故事。事实上,您确实应该避免使用预先准备好的语句来评估SQL变量:
$sth = $dbh->prepare('INSERT INTO table VALUES(?, ?, ?)');
$sth->execute($var1, $var2, $var3);
那么$var1是否会取代原来的?当我运行这两行代码时做标记?@JamesBrown:是的,
execute()
的参数将依次替换每个?
占位符。啊,你是我的英雄!谢谢你的帮助和提示!那么$var1是否会取代原来的?当我运行这两行代码时做标记?@JamesBrown:是的,execute()
的参数将依次替换每个?
占位符。啊,你是我的英雄!谢谢你的帮助和提示!