未捕获错误:在基于|套接字连接的php中对布尔值调用成员函数fetch|row()

7dl7o3gd  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(301)

我的一个php文件中总共有三个函数。我的第一个功能是工作正常。第二个和第三个函数只有表名不同,其他都可以。当我运行第二个或第三个函数时,它给我的错误如下

Uncaught Error: Call to a member function fetch_row() on boolean in

我的最后两个函数的下线都有错误。

while($row = $result->fetch_row()) {

我已经测试了所有来自phpmyadmin的查询,它工作正常,没有任何问题。
我的完整php文件如下所示

<?php
require_once("includes/conf.php");

function getAllNumbers() {
    global $conn;
    $sql = "SELECT number from number_list WHERE server=1";
    $result = $conn->query($sql);
    $data = array();
    if($result) {
        while($row = $result->fetch_row()) {
        array_push($data, $row[0]);
        }
    }
    $response["data"] = $data;
    return $response;
}

function getNewNumbers() {
    global $conn;
    $sql = "SELECT number, id from new_numbers WHERE server = 1";
    $result = $conn->query($sql);
    $newData = array();
    if($result) {
        while($row = $result->fetch_row()) {
        array_push($newData, $row[0]);
        $id = $row[1];
        $delete = "DELETE number from new_numbers WHERE id = $id";
        $result = $conn->query($delete);

        }
    }
    $response["newData"] = $newData;
    return $response;
}

function getDeleteNumbers() {
    global $conn;
    $sql = "SELECT number, id from delete_numbers WHERE server = 1";
    $result = $conn->query($sql);
    $deleteData = array();
    if($result) {
        while($row = $result->fetch_row()) {
        array_push($deleteData, $row[0]);
        $id = $row[1];
        $delete = "DELETE number from delete_numbers WHERE id = $id";
        $result = $conn->query($delete);

        }
    }
    $response["deleteData"] = $deleteData;
    return $response;
}

?>

表号\u列表

id  int(11) NO  PRI NULL    auto_increment  
name    varchar(50) NO      NULL        
number  varchar(50) NO      NULL        
server  int(10) NO      0       
status  int(1)  NO      -1      
last_act    timestamp   NO      CURRENT_TIMESTAMP       
user_id int(11) NO  MUL NULL        
created_at  timestamp   NO      CURRENT_TIMESTAMP       
disable int(11) NO      0       
notify  int(1)  NO      1       
fcm varchar(500)    NO      NULL

新表\u编号

id  int(11) NO  PRI NULL    auto_increment  
number  varchar(50) NO      NULL        
server  int(10) NO      0

表删除\u编号

id  int(11) NO  PRI NULL    auto_increment  
number  varchar(50) NO      NULL        
server  int(10) NO      0

我应该清楚的是,我每xx分钟从基于socket连接的php文件调用一次这些函数,我一直在命令行中24/7运行这个文件。我想是因为需要你一次。如果有人能给我解决问题的提示,请告诉我。谢谢

new9mtju

new9mtju1#

错误状态为fetch\ U row正在获取布尔值以执行操作。更改sql查询。

function getAllNumbers() {
    global $conn;
    $sql = "SELECT number from number_list WHERE server='1'";
    $result = $conn->query($sql);
    $data = array();
    if($result) {
        while($row = $result->fetch_row()) {
        array_push($data, $row[0]);
        }
    }
    $response["data"] = $data;
    return $response;
}

function getNewNumbers() {
    global $conn;
    $sql = "SELECT number, id from new_numbers WHERE server = '1'";
    $result = $conn->query($sql);
    $newData = array();
    if($result) {
        while($row = $result->fetch_row()) {
        array_push($newData, $row[0]);
        $id = $row[1];
        $delete = "DELETE number from new_numbers WHERE id = '$id'";
        $result = $conn->query($delete);

        }
    }
    $response["newData"] = $newData;
    return $response;
}

function getDeleteNumbers() {
    global $conn;
    $sql = "SELECT number, id from delete_numbers WHERE server = '1'";
    $result = $conn->query($sql);
    $deleteData = array();
    if($result) {
        while($row = $result->fetch_row()) {
        array_push($deleteData, $row[0]);
        $id = $row[1];
        $delete = "DELETE number from delete_numbers WHERE id = '$id'";
        $result = $conn->query($delete);

        }
    }
    $response["deleteData"] = $deleteData;
    return $response;
}

而且,这种方法是对sql注入的公开邀请。你应该使用事先准备好的陈述

des4xlb0

des4xlb02#

这是错误
$result=$conn->query($delete);
改用这个

<?php
require_once("includes/conf.php");

function getAllNumbers() {
    global $conn;
    $sql = "SELECT number from number_list WHERE server=1";
    $result = $conn->query($sql);
    $data = array();
    if($result) {
        while($row = $result->fetch_row()) {
        array_push($data, $row[0]);
        }
    }
    $response["data"] = $data;
    return $response;
}

function getNewNumbers() {
    global $conn;
    $sql = "SELECT number, id from new_numbers WHERE server = 1";
    $result = $conn->query($sql);
    $newData = array();
    if($result) {
        while($row = $result->fetch_row()) {
        array_push($newData, $row[0]);
        $id = $row[1];
        $delete = "DELETE number from new_numbers WHERE id = $id";
        $deleted = $conn->query($delete);

        }
    }
    $response["newData"] = $newData;
    return $response;
}

function getDeleteNumbers() {
    global $conn;
    $sql = "SELECT number, id from delete_numbers WHERE server = 1";
    $result = $conn->query($sql);
    $deleteData = array();
    if($result) {
        while($row = $result->fetch_row()) {
        array_push($deleteData, $row[0]);
        $id = $row[1];
        $delete = "DELETE number from delete_numbers WHERE id = $id";
        $deleted = $conn->query($delete);

        }
    }
    $response["deleteData"] = $deleteData;
    return $response;
}

?>

相关问题