проблемы с выводом mysqli

gawric

Новичок
Здравствуйте. Писал пару дней назад о свой проблеме, тут спасибо помогли.
Но продолжая обучение, опять наткнулся на стену. Пересмотрел кучу мануалов и ответов.
Класс для бд
PHP:
<?php
require 'info_class.php';//подключаем класс с данными для коннекта

class db {
            private $info;//объявляем переменную для работы внутри класса
            public $mysqli;//объявляем переменную для работы по всем классам
  
public function __construct() {        //запускаем конструкт т.к он запускается всегда первым в классе

        $this->info = new info();//создаем объект для подключения к бд (параметры)
        $this->mysqli = new mysqli($this->info->host, $this->info->login, $this->info->pass, $this->info->db);//подключаемся к бд
        $this->mysqli->query("SET NAMES 'utf8' ");//вызываем кодировку для работы с бд
      
            }
            

public function db_query($query) {        //выполняем зарос в базу данных
    
  return $this->mysqli->query($query);
       
      
}
        }    
?>
Вот здесь проблема пытаюсь вытащить все записи из полей `ip` - `port`
получаю только 1 строку, а дальше тишина. При использовании цикла while повторяет бесконечно 1 строку. При использовании for повторяет N-ое кол-во раз 1 строку, зато num_rows выводит правильный результат 4 строки.
Вариантов нету.
PHP:
<?php
require 'lib/status_class.php';
require 'lib/db.class.php';

$emp = new db();//создаем объект
$status = new status();//создаем объект

$query = "SELECT * FROM allserver3";
$emp->db_query($query);//вызываем функцию

      while($row = mysqli_fetch_array($emp->db_query($query))!= false){
    print_r($row);
    echo"<br>";
          }
        ?>
 

С.

Продвинутый новичок
Чтобы ка่ждую пару дней не спрашивать у дяди, что не так в твоем коде, есть специальная метода. Она описана здесь:
http://phpfaq.ru/debug
 

Andkorol

Новичок
Рекомендую таки почитать мануал по mysqli_fetch_array, внимательно изучить примеры использования и примеры в комментариях.
 

gawric

Новичок
Чтобы ка่ждую пару дней не спрашивать у дяди, что не так в твоем коде, есть специальная метода. Она описана здесь:
http://phpfaq.ru/debug
пробовал, обычно не выводит ошибки. В Html пишет если конечно я там все правильно понял
46.174.50.38<br>46.174.50.38<br>46.174.50.38<br>3<br>
 

gawric

Новичок
Рекомендую таки почитать мануал по mysqli_fetch_array, внимательно изучить примеры использования и примеры в комментариях.
Читал очень часто и очень много примеров просмотрел (за 8 часов то), все работает на примере где я не использую классы(грешил на функцию, но num_rows откуда то берет 4 строки).
Если бы у меня были другие варианты, я бы сюда не писал.
Если я правильно понял mysqli_fetch_array заносит по 1 строке за 1 проход в массив. я пробовал просто указывать вывести весь массив в цикле, пробовал каждый результат заносить в новый массив и выводить, всегда заносится только 1 строка, как будто там только она и есть, как цикл может проходить 10 раз и заносить одну и ту же строку mysqli_fetch_array если в конце он вроде выдает false, если . Если у вас есть варианты будут рад подсказке.
 

Andkorol

Новичок
Я просто сделаю копипаст примера кода использования mysqli_fetch_array, прям из первого же комментария.
Если озарение не наступит – забей.
PHP:
// Putting multiple rows into an array:

$query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3";
$result = $mysqli->query($query);

while($row = $result->fetch_array())
{
    $rows[] = $row;
}
Hint: в качестве аргумента функции используется результат выполненного ранее запроса:
PHP:
$query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3";
$result = mysqli_query($link, $query);

/* ассоциативный массив */
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
 
Последнее редактирование:
Сверху