当前位置:  开发笔记 > 编程语言 > 正文

Perl-SQLite3:基本问题

如何解决《Perl-SQLite3:基本问题》经验,为你挑选了1个好方法。

我承认自从我使用Perl已经有一段时间了,但这让我很难过.

这是问题所在:

#!/usr/bin/perl
use CGI::Carp qw(fatalsToBrowser);
use DBI;

print "Content-type: text/html\n\n";
print "";

my $login = "admin@xxxxx.com";
my $dbfile = "/var/www/shopsite-data/shopsite_db";
my $sql = qq`SELECT ss_OrderID FROM ss_ORDER WHERE ss_Email=?`;

my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile", "", "") || die "Cannot connect: $DBI::errstr";

my $sth = $dbh->prepare($sql);
$sth->execute($login) or die $sth->errstr();
while (my @result = $sth->fetchrow_array()) {
  print "OrderID: $result[0]
"; } $sth->finish; print ""; print ""; $dbh->disconnect;

什么都不返回,但是当使用相同的查询使用sqlite3登录时,我得到了一个结果集.当我更改查询时,我也得到一个结果集

my $sql = qq`SELECT ss_OrderID FROM ss_ORDER WHERE ss_Email=?`;

my $sql = qq`SELECT ss_OrderID FROM ss_ORDER`;

小智.. 13

显而易见的问题是双引号内的@:

my $login = "admin@xxxxx.com";

可能会出现

 $login = "admin.com"

并且,如果您打开了警告,则会在日志文件中打印一条警告,因为Perl将@xxxx视为一个数组并尝试对其进行插值,然后发出警告,因为它是空的.也就是说,假设您没有名为@xxxx的数组.如果你这样做,那么你将获得它在字符串中的所有值.

如果您有电子邮件地址,请在其周围使用单引号以防止@xxxx作为数组进行插值:

my $login = 'admin@xxxxx.com';

或者你可以使用

my $login = "admin\@xxxxx.com";

防止@开始插值.您的脚本可能还有其他问题,但这是最明显的问题.

奇怪的是,我只是在阅读Perl中插值的缺点.

还有一件事 ...

还有一件事:你已经有了fatalsToBrowser,但是

use warnings;
use strict;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);

可能会在你的浏览器上给你一个关于未初始化值的警告,因此可能值得继续warningsToBrowser,直到你的脚本看起来正常工作(或者如果它再次停止工作)(这里的文档),并且其他两个总是在.



1> 小智..:

显而易见的问题是双引号内的@:

my $login = "admin@xxxxx.com";

可能会出现

 $login = "admin.com"

并且,如果您打开了警告,则会在日志文件中打印一条警告,因为Perl将@xxxx视为一个数组并尝试对其进行插值,然后发出警告,因为它是空的.也就是说,假设您没有名为@xxxx的数组.如果你这样做,那么你将获得它在字符串中的所有值.

如果您有电子邮件地址,请在其周围使用单引号以防止@xxxx作为数组进行插值:

my $login = 'admin@xxxxx.com';

或者你可以使用

my $login = "admin\@xxxxx.com";

防止@开始插值.您的脚本可能还有其他问题,但这是最明显的问题.

奇怪的是,我只是在阅读Perl中插值的缺点.

还有一件事 ...

还有一件事:你已经有了fatalsToBrowser,但是

use warnings;
use strict;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);

可能会在你的浏览器上给你一个关于未初始化值的警告,因此可能值得继续warningsToBrowser,直到你的脚本看起来正常工作(或者如果它再次停止工作)(这里的文档),并且其他两个总是在.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有