Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在使用Perl DBI->MySQL时检查空集_Mysql_Perl_Dbi - Fatal编程技术网

如何在使用Perl DBI->MySQL时检查空集

如何在使用Perl DBI->MySQL时检查空集,mysql,perl,dbi,Mysql,Perl,Dbi,有没有办法检查DBI->execute语句是否返回空集?其目的是创建一个表,然后请求用户名,如果用户名不在表中,请检查空的fetch语句,然后添加到表中。有什么建议吗 $sth = $dbh->prepare("SELECT * FROM table_name_here"); $sth->execute(); if(...$sth->fetch() was empty...) do something... 试试看: $sth = $dbh-

有没有办法检查DBI->execute语句是否返回空集?其目的是创建一个表,然后请求用户名,如果用户名不在表中,请检查空的fetch语句,然后添加到表中。有什么建议吗

    $sth = $dbh->prepare("SELECT * FROM table_name_here");
    $sth->execute();

    if(...$sth->fetch() was empty...)
    do something...
试试看:

$sth = $dbh->prepare("SELECT * FROM table_name_here");
$sth->execute();

unless ($sth->fetch()) { do something..; }
试试看:

$sth = $dbh->prepare("SELECT * FROM table_name_here");
$sth->execute();

unless ($sth->fetch()) { do something..; }

实现这一点的一种可能方法是:

my $row_count = 0;
while (my @ary = $sth->fetchrow_array() ) { ...; $row_count++; }
unless ($row_count) { 
  ...
}
但我不禁想知道,为什么在这种特定情况下需要使用fetchrow而不是fetchall。事实上,我会这样重组它:

my ($count) = $dbh->selectrow_array('
   SELECT COUNT(*) FROM users WHERE username = ?'
   undef, $username);
if ($count) { ... } 

实现这一点的一种可能方法是:

my $row_count = 0;
while (my @ary = $sth->fetchrow_array() ) { ...; $row_count++; }
unless ($row_count) { 
  ...
}
但我不禁想知道,为什么在这种特定情况下需要使用fetchrow而不是fetchall。事实上,我会这样重组它:

my ($count) = $dbh->selectrow_array('
   SELECT COUNT(*) FROM users WHERE username = ?'
   undef, $username);
if ($count) { ... } 
有没有办法检查DBI->execute语句是否返回空集

有没有办法检查DBI->execute语句是否返回空集


我建议你像这样对记录的数量做一个初步的提取

my ($records) = $dbh->selectrow_array('SELECT count(*) FROM table_name_here');

我建议你像这样对记录的数量做一个初步的提取

my ($records) = $dbh->selectrow_array('SELECT count(*) FROM table_name_here');

这不适用于SELECT语句。从“DBI”模块的开始:对于“SELECT”语句,通常不可能知道将返回多少行,除非通过获取所有行。这对SELECT语句不起作用。从“DBI”模块的开始:对于“SELECT”语句,通常不可能知道将返回多少行,除非通过全部获取它们。这会告诉我将返回多少个不同的条目吗?因此,如果一个表中有4个条目,这将设置$records=4?它将告诉您表中有多少条记录,它们是否不同,尽管您很可能至少有一个唯一的列,在这种情况下,它们必须都不同。我建议你做个实验。请记住,在获取计数和获取数据本身之间,记录数发生变化的可能性非常小。这能告诉我将返回多少个不同的条目吗?因此,如果一个表中有4个条目,这将设置$records=4?它将告诉您表中有多少条记录,它们是否不同,尽管您很可能至少有一个唯一的列,在这种情况下,它们必须都不同。我建议你做个实验。请记住,在获取计数和获取数据本身之间,记录数发生变化的可能性非常小。