m0_65710985 2025-03-05 21:33 采纳率: 100%
浏览 3
已结题

php+sqlite3查询数据库记录条数为0的判断问题

php+sqlite3查询数据库记录时遇到这样一个问题:

在以下代码中:

$id1是在数据库中存在的,以此为条件可以输出正确json结果

$id2是在数据库中不存在的,以此为条件并没有输出“none”,而是输出了一个空的json


<?php
//$id1 = "68d68b33";  //数据库中**有**这条记录
$id2 = "68d68b3a";    //数据库中**没有**这条记录

class MyDB extends SQLite3 {
    function __construct() {
        $this->open('../sqlite3/data/db-BJuQ4kRu.php');
    }
}

$db = new MyDB();

//$sql="select * from users where id = '{$id1}' limit 1";
$sql="select * from users where id = '{$id2}' limit 1";
$results = $db->Query($sql);
    
$row_record = array();
if ($results) {
    while($row = $results->fetchArray(SQLITE3_ASSOC)) {
        $row_record[] = $row;
        }
    echo json_encode($row_record);
}else{
    echo "none";
}
?>

问题是:在此情况下如何判断是否查询到了记录,并进行正确的输出。
请多指教,多谢!

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2025-03-05 21:33
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题解答

    你遇到的问题是,在使用 PHP 和 SQLite3 查询数据库时,无法正确判断记录条数为 0 的情况。

    问题的原因可能是,你使用的查询语句没有正确地处理记录条数为 0 的情况。

    以下是一个简单的解决方案:

    <?php
    // 连接数据库
    $db = new SQLite3('database.db');
    
    // 查询数据库
    $result = $db->query("SELECT * FROM table_name WHERE id = '$id1'");
    
    // 判断记录条数
    if ($result->numRows() == 0) {
        echo json_encode(array('result' => 'none'));
    } else {
        // 输出正确json结果
        $data = array();
        while ($row = $result->fetchArray()) {
            $data[] = $row;
        }
        echo json_encode($data);
    }
    

    在上面的代码中,我们使用 numRows() 方法来判断记录条数,如果记录条数为 0,则输出 "none",否则输出正确的json结果。

    你也可以使用 fetchArray() 方法来判断记录条数,如果记录条数为 0,则 fetchArray() 方法将返回 FALSE。

    <?php
    // ...
    if ($row = $result->fetchArray()) {
        // 输出正确json结果
    } else {
        echo json_encode(array('result' => 'none'));
    }
    

    希望这个解决方案能够帮助你解决问题!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月14日
  • 已采纳回答 3月6日
  • 创建了问题 3月5日