如何检查select查询返回值或使用PHP和SQLite 3清空

时间:2015-03-18 15:42:35

标签: php sqlite

我正在使用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
}

但这似乎很棘手......有没有办法检查选择查询是否返回了什么内容?

4 个答案:

答案 0 :(得分:2)

你可以在"运行时":

中简单地解决它
$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
}

答案 1 :(得分:0)

您无法接受变量,可以使用issetempty

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.
}

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

答案 2 :(得分:0)

Theres一个名为* - > 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..
}

答案 3 :(得分:0)

没有人给出完美的答案,但每一条评论都帮助我做到了。因此,如果您遇到同样的问题,请检查所有评论,然后检查我的答案。来自@Deep的特别帮助

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