- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我收到以下代码的错误:
#!C:/usr/bin/perl -w
use CGI;
use strict;
use DBI();
use CGI::Carp qw(fatalsToBrowser);
print "content-type: text/html; charset=iso-8859-1\n\n";
my $q=new CGI;
my $ename=$q->param('ename');
my $email=$q->param('email');
print $q->header;
print "<br>$ename<br>";
#connect to database.
my $dbh = DBI->connect("DBI:mysql:database=test;host=localhost","root","mukesh",
{'RaiseError' => 1});
eval {$dbh->do("CREATE TABLE IF NOT EXISTS emp (ename VARCHAR(20), email VARCHAR(50))")};
print "<br>creating table emp failed: $@<br>" if $@;
my $sql="INSERT INTO emp(ename,email) values('$ename','$email')";
my $sth = $dbh->prepare($sql) or die "Can't prepare $sql:$dbh->errstrn";
#pass sql query to database handle
my $rv = $sth->execute() or die "can't execute the query: $sth->errstrn";
my @row;
while (@row = $sth->fetchrow_array) {
print join(", ",@row);
}
$sth->finish();
$dbh->disconnect();
if ($rv==1){
print "<br>Record has been successfully updated !!!<br>";
}else{
print "<br>Error!!while inserting record<br>";
exit;
}
请指教,请问是什么问题。如果我删除这段代码,它工作正常。
my @row;
while (@row = $sth->fetchrow_array) {
print join(", ",@row);
}
最佳答案
您正尝试在 DBI 中使用常见的 SELECT
循环 - 准备、执行、获取 - 用于非选择
查询(INSERT
在你的情况下)。您可能应该做的是直接检查 execute
的结果。引用 the doc :
For a non-SELECT statement,
execute
returns the number of rows affected, if known. If no rows were affected, then execute returns "0E0", which Perl will treat as 0 but will regard as true. Note that it is not an error for no rows to be affected by a statement. If the number of rows affected is not known, then execute returns -1.
关于mysql - DBD::mysql fetchrow_array 失败:没有 execute() 的 fetch()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18816789/
我正在尝试在 Ubuntu 12.04 上运行生物信息学工具 OrthoMCL。此工具需要一个 MySQL 数据库来进行数据处理。我的 SQL 数据库运行良好,版本为 5.5.34。 OrthoMCL
安装信息: Using DBI 1.608 (for perl 5.008009 on x86_64-linux) installed in /usr/local/lib/perl5/site_per
当尝试运行从 PHP 网页创建新 oracle 数据库的 perl 脚本时,出现错误。 我的 PHP 页面托管在 linux 服务器 (centos7) 更新了以下环境变量: export ORACL
在http://kobesearch.cpan.org/htdocs/DBD-mysql/DBD/mysql.pm.html有对 ODBC 的某些引用,但 afaik DBD::mysql 在连接堆栈
因为使用 DBD::mysql 的类似语句似乎工作正常,当使用 DBD::SQLite 时,我在 HAVING 子句中使用整数占位符的错误在哪里?作为 DBI 驱动程序? #!/usr/bin/per
我写了下面的代码: $dbh = DBI->connect('dbi:SQLite:mysqlite.db', "", "") || die "Cannot connect: $DBI::errstr
#!/usr/bin/env perl use warnings; use strict; use DBI; my $dbh = DBI->connect( "DBI:CSV:", '', '', {
我尝试了 3 种不同的方法来将多行(超过 500 行)插入到 SQLite 表中。与直觉相反,下面的方法 3 是最快的。我本以为方法 2 是最快的,因为它使用“准备好的”语句句柄。但是我的第三种方法—
有人可以指导我如何安装 Perl DBD::Oracle模块? 这是我到目前为止所做的: 平台:RHEL 5.8 64 位 已安装 Perl DBI 包 安装了适用于 Linux 64 位的 Orac
我试图在 Mac OS 上运行 Perl DBI 并不断遇到此错误: install_driver(mysql) failed: Can't load '/Library/Perl/5.18/darw
我很难让手动事务按照 DBD::Pg 中的记录工作,或者我只是误解了所述文档。 我的理解是,如果我想手动管理事务,我应该关闭 AutoCommit。 $dbh->{AutoCommit} = 0; $
为什么行 "$rc = $dbh->func( 'dropdb', $dbname, 'admin' );"删除数据库 db_test_2? #!/usr/bin/perl use warnings;
我正在尝试使用 DBD::Mock测试使用数据库的代码。到目前为止,正常的 SQL 查询工作得很好,但是我对如何测试调用存储过程的代码有些不知所措。使用 DBD::Mock::Session->new
我想通过 Perl 连接到 Oracle 数据库。为此,我尝试使用以下命令从 CPAN 安装 DBD::Oracle: [root@localhost Admin]# cpan DBD::Oracle
我曾尝试在 Linux 和 Windows 上使用 DBD::Advantage,但没有成功。 Windows 版本附带了一个看似完整的安装程序,但它留下了 DBD-Advantage-8.10.ta
我正在尝试使用带有 DBI 和 DBD::CSV 的德式 CSV 文件。这反过来又使用 Text::CSV 来解析文件。我想使用 SQL 查询该文件中的数据。 我们先来看看文件。它由分号( ; )分隔
我有两个疑问 当我运行以下 perl 脚本时,我收到以下错误 Unable to connect: ORA-12154: TNS:could not resolve the connect ident
有人可以解释一下 DBI 和 DBD 到底是什么吗?什么时候应该使用其中一种以及使用一种的好处。 最佳答案 DBI 是数据库访问库,而 DBD 是 DBI 用来访问特定数据库的“驱动程序”(例如,一个
在写我的问题时(如何:插入一个新条目,如果已经存在,请更新它),我在Related Questions中找到了一些答案: $sql = "INSERT OR REPLACE INTO $table
我并行使用 SQLite 数据库。主要用于阅读——这意味着一切都很好。但也用于写入和删除表格。然后突然我在随机时间得到这个(这表明一个竞争条件 - 这是预期并行运行的东西): Error: near
我是一名优秀的程序员,十分优秀!