Linux perl-打印sql行
我想打印perl脚本的所有sql结果,我已经连接到数据库,我想显示sql查询的结果:Linux perl-打印sql行,linux,shell,perl,Linux,Shell,Perl,我想打印perl脚本的所有sql结果,我已经连接到数据库,我想显示sql查询的结果: MySQL("SELECT * FROM test"); # define subroutine to submit MySQL command sub MySQL { #Connect to the database. my $dbh = DBI->connect("DBI:mysql:database=database;host=ip", "login", '
MySQL("SELECT * FROM test");
# define subroutine to submit MySQL command
sub MySQL
{
#Connect to the database.
my $dbh = DBI->connect("DBI:mysql:database=database;host=ip",
"login", 'password',
{'RaiseError' => 1});
my $query = $_[0]; #assign argument to string
my $sth = $prepare($query); #prepare query
$sth->execute(); #execute query
while (my @row = $sth->fetchrow_array)
{
print "@row\n";
}
}
我有以下错误:
Global symbol "$prepare" requires explicit package name at test3.pl line 34.
syntax error at test3.pl line 34, near "$prepare("
Global symbol "$sth" requires explicit package name at test3.pl line 36.
Execution of test3.pl aborted due to compilation errors.
更改此行:
my $sth = $prepare($query);
到
在while循环之后,不要忘记关闭$sth
和$dbh
句柄:
$sth->finish;
$dbh->disconnect;
更改此行:
my $sth = $prepare($query);
到
在while循环之后,不要忘记关闭$sth
和$dbh
句柄:
$sth->finish;
$dbh->disconnect;
在你上一篇文章中,在下面的评论中只有一处提到e
#INNER JOIN events e ON (e.objectid = t.triggerid)
可能最好使用语法
内部连接事件作为e ON(e.objectid=t.triggerid)
——更具可读性在您的上一篇文章中,在下面的注释中只有一个对e的引用
#INNER JOIN events e ON (e.objectid = t.triggerid)
可能最好使用语法
内部连接事件作为e ON(e.objectid=t.triggerid)
——更具可读性目前我手头没有可用的数据库。下面的例子在理论上应该是可行的。我已经在fetch\u hashref上替换了fetch\u array,输出将提供关于每一行的信息
ddd column=value\t column=value\t...
use strict;
use warnings;
my $query = qq(SELECT * FROM tb_test);
db_query($query);
sub db_query {
my $query = shift;
my $count = 1;
my $dbh = DBI->connect(
"DBI:mysql:database=database;host=ip",
"login", 'password',
{'RaiseError' => 1}
);
my $sth = $dbh->prepare($query);
$sth->execute();
while ( my $row = $sth->fetchrow_hashref() ) {
print "%5d ", $count++; # rows count
while( my($k,$v) = each %$row ) { print "%s=%s\t",$k,$v; }
print "\n"; # we done with current row
}
$sth->finish;
$dbh->disconnect;
}
您需要查看文档以充分了解它的工作原理。目前我手头没有可用的数据库。下面的例子在理论上应该是可行的。我已经在fetch\u hashref上替换了fetch\u array,输出将提供关于每一行的信息
ddd column=value\t column=value\t...
use strict;
use warnings;
my $query = qq(SELECT * FROM tb_test);
db_query($query);
sub db_query {
my $query = shift;
my $count = 1;
my $dbh = DBI->connect(
"DBI:mysql:database=database;host=ip",
"login", 'password',
{'RaiseError' => 1}
);
my $sth = $dbh->prepare($query);
$sth->execute();
while ( my $row = $sth->fetchrow_hashref() ) {
print "%5d ", $count++; # rows count
while( my($k,$v) = each %$row ) { print "%s=%s\t",$k,$v; }
print "\n"; # we done with current row
}
$sth->finish;
$dbh->disconnect;
}
您需要查看文档以充分了解其工作原理。请阅读有关如何使用
准备的说明。
请阅读有关如何使用准备的说明。
好的,您已经更改了您的问题[部分现在已删除]。在最初的问题中,您在SQL语句中注释掉了“”字段的地方添加了“额外”问题——是什么导致了错误。这就是我向您指出错误原因的原因。好吧,您已经更改了您的问题[部分内容现在已删除]。在最初的问题中,您在SQL语句中注释掉了“”字段的地方添加了“额外”问题——是什么导致了错误。这就是我向你指出错误原因的原因。