PHP: Предупреждение Couldn't fetch mysqli_result

361
07 января 2017, 16:20
function query($query) {
    return $this->mysqli->query($query);
}
function select(){
    // ...
    while ($row = $result_set->fetch_assoc()) {
        $data[$i] = $row;
        $i++;
    }
    $result_set->close();
    return $data;
}
  • В других вопросах Stackoverflow, котоыре я прочитал, причиной подобного предупреждения были функции $result_set->close(); или mysqli_free_result($articles_data);, вызванные внутри блока while, но у меня, как видите, не так.
  • С помощью отладчика я установил, что данное предупреждение возникает при выполнении строки $result_set->close();, то есть цикл благополучно завершается, кроме того, в массиве находятся правильные данные (в смысле то, которые я хотел получить из БД).

  • $result_set перез вызовом fetch_assoc:

  • Сообщение выведено как Warning, т. е. после него программа продолжает выполняться.

Обновление Полный листинг функций

private function query($query) {
    return $this->mysqli->query($query);
}
private function query($query) {
    return $this->mysqli->query($query);
}
private function select($table_name, $fields, $where = "", $order = "", $up = true, $limit = "") {
    for ($i = 0; $i < count($fields); $i++) {
        if ((strpos($fields[$i], "(") === false) && ($fields[$i] != "*")) {
            $fields[$i] = "`".$fields[$i]."`";
        }
    }
    $fields = implode(",", $fields);
    $table_name = $this->config->adminPanel_TablePrefix.$table_name;
    if (!$order) {
        $order = "ORDER BY `id`";
    }
    else {
        if ($order != "RAND()") {
                $order = "ORDER BY `$order`";
                if (!$up) {
                    $order .= " DESC";
                }
        }
        else {
            $order = "ORDER BY $order";
        }
    }
    if ($limit) {
        $limit = "LIMIT $limit";
    }
    if ($where) {
        $query = "SELECT $fields FROM $table_name WHERE $where $order $limit";
    }
    else {
        $query = "SELECT $fields FROM $table_name $order $limit";
    }
    $result_set = $this->query($query);
    if (!$result_set) {
        return false;
    }
    $i = 0;
    while ($row = $result_set->fetch_assoc()) {
        $data[$i] = $row;
        $i++;
    }
    $result_set->close();
    return $data;
}
READ ALSO
Magento 1.14. Reindex product_attribute error - PDOException: There is no active transaction in

Magento 1.14. Reindex product_attribute error - PDOException: There is no active transaction in

Был использован стандартный реиндекс magentoНа тестовых серверах с идентичной настройкой базы работает нормально

546
Как отловить это исключение InvalidArgumentException

Как отловить это исключение InvalidArgumentException

Как отловить это исключение exception 'InvalidArgumentException' в Laravel 5

455
Проверка IP на вхождение в диапазон

Проверка IP на вхождение в диапазон

Скачал ipgeobase выбрал все ip одного города, они там указаны диапазонамиПеревожу ip в число с помощью ip2long() и проверяю на больше, меньше

381