如何在Perl DBI查询中插入带引号的字符串?

6 mysql perl

什么是插入使用DBI例如,可以同时包含单引号和双引号字符串("")到MySQL的首选方式,?$val1$val2可以包含引号:

my $dbh = DBI->connect( ... );
my $sql = "insert into tbl_name(col_one,col_two) values($val1, $val2)";
my $sth = $dbh->prepare($sql);
$sth->execute();
Run Code Online (Sandbox Code Playgroud)

Pau*_*lin 25

使用绑定查询

$sth = $dbh->prepare("insert into tbl_name(col_one,col_two) values(?,?)");
$sth->execute($val1, $val2);
Run Code Online (Sandbox Code Playgroud)

如果使用绑定变量,则会为您转义所有内容.

更新:更改了我的示例以与编辑到问题中的示例相对应.

更新:我不知道为什么亚当删除了他的答案,但如果由于某种原因你不能使用绑定变量(又名"占位符"),你也可以使用$dbh->quote($var)变量.例如:

$sql = sprintf "SELECT foo FROM bar WHERE baz = %s",
    $dbh->quote(q("Don't"));
Run Code Online (Sandbox Code Playgroud)

  • 占位符还具有防止SQL注入攻击的非常有用的属性.使用它们.总是.*永远不要*直接将用户提供的数据放入您的查询中. (2认同)