我在perl中有几个mysql查询,但where子句的一些值包含单词之间的空格,例如冈比亚.当我的脚本使用包含空格的where子句运行时,它会忽略第二个单词.
我想知道如何解决这个问题,即如果我输入冈比亚,应该对待冈比亚而不是.
如果您使用的是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)