我想自动为我的mysql查询添加单引号

She*_*say 0 mysql perl

我在perl中有几个mysql查询,但where子句的一些值包含单词之间的空格,例如冈比亚.当我的脚本使用包含空格的where子句运行时,它会忽略第二个单词.

我想知道如何解决这个问题,即如果我输入冈比亚,应该对待冈比亚而不是.

bvr*_*bvr 6

如果您使用的是DBI,则可以使用占位符将任意数据发送到数据库,而无需关心转义.占位符是prepare声明中的问号,实际值给出execute:

use DBI;

$dbh = DBI->connect("DBI:mysql:....",$user,$pass)
    or die("Connect error: $DBI::errstr");

my $sth = $dbh->prepare(qq{ SELECT something FROM table WHERE name = ? });
$sth->execute('the gambia');

# fetch data from $sth

$dbh->disconnect();
Run Code Online (Sandbox Code Playgroud)

编辑:如果您正在撰写查询(如评论中所建议的那样),您可以使用以下quote方法:

my $country = "AND country = " . $dbh->quote('the gambia');
my $sth = $dbh->prepare(qq{ SELECT something FROM table WHERE name = ? $country});
Run Code Online (Sandbox Code Playgroud)