如何使用PHP和SQLite 3检查select查询返回值是否为空


How to check if select query returned values or empty with PHP and SQLite 3

我使用SQLite3PHP来创建一个小类,这意味着我不想要任何插件或其他类,只想要普通的SQLite3PHP

目前我正在尝试从数据库中检索值,但我想检查是否有符合条件的结果:

$select = $db->query("SELECT * FROM views WHERE address = '$ip' AND page = ''");

经过一番搜索,我找不到任何具体的东西,但我想我错过了

我第一次尝试:

   if($select){
        // result returned
   }else{
        // no results
   }

然后这个解决方案奏效了(以前总是失败):

while($row = $select->fetchArray(SQLITE3_ASSOC) ){
    $exists = TRUE;
    break;
}
if($exists == TRUE){
    // result returned
}else{
    // no results
}

但这似乎很棘手。。。有没有一种方法可以检查select查询是返回了什么还是什么都没有?

您可以在"运行时"中简单地检查:

$emptyArr  = array();
$filledArr = array(1,2,3,4,5);
if ($emptyArr) {
    echo 'Empty array is not empty!';
}
if (!$filledArr) {
    echo 'Filled array is empty!';
}

因为:http://php.net/manual/ru/sqlite3result.fetcharray.php将返回填充数组false。那么这是相等的:

$arr = array();
var_dump((false == $arr)); // true

特别适合所有喜欢眩晕的人!令人难以置信的甜蜂蜜溶液:

if ($res = $select->fetchArray(SQLITE3_ASSOC)) {
    foreach ($res as $item) {
        // output
    }
} else {
    // nothing
}

你不能接受变量并使用isset或空吗

if(!empty($var)){
   // Variable is not empty and is set
}
if(isset($var)){
    // Variable is set, may be empty though.
}
if(empty($var)){
    // Variable is not set or is empty.
}
if(!isset($var)){
    // Variable is not set.
}

这也适用于数组和数组键。

有一个名为*->numRows()的函数;

http://php.net/manual/en/function.sqlite-num-rows.php

返回从数据库中提取的行数。我不使用sqlite,但我确信dbquery会从数据库(在本例中是一个对象)返回一组值,如果成功与否,还会返回一个true/false。

尝试:

$select = $db->query("SELECT * FROM views WHERE address = '$ip' AND page = ''");

$rows = $select->numRows();
echo $rows;  //returns # of rows
or    
if ($rows){
//return anything but 0 would eval true..
}

没有人给出完美的答案,但每一条评论都帮助我把它做好。所以,如果你有同样的问题,请查看所有的评论,然后再查看我的答案。来自@Deep 的特别帮助

if($select->fetchArray(SQLITE3_ASSOC)){
    // results returned
}else{
    // no results. empty.
}}