У меня есть три функции в одном файле 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;
}
?>
Таблица number_list
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
Таблица new_numbers
id int(11) NO PRI NULL auto_increment
number varchar(50) NO NULL
server int(10) NO 0
Таблица delete_numbers
id int(11) NO PRI NULL auto_increment
number varchar(50) NO NULL
server int(10) NO 0
Я должен очистить, что я вызываю эти функции каждые xx минут из моего PHP файла на основе сокетов, который я продолжаю работать 24/7 из командной строки. Я думаю, что из-за require_once. Дайте мне знать, может ли кто-нибудь дать мне подсказку, чтобы решить эту проблему. Спасибо
Ошибка указывает, что fetch_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 Injections. Вы должны использовать подготовленные заявления
вот ошибка
$ 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;
}
?>