Ошибка - 'попытка получить доступ к смещению массива по значению типа null' - PullRequest
0 голосов
/ 19 апреля 2020

Я постоянно получаю сообщение об ошибке: «пытаюсь получить доступ к смещению массива по значению типа null» в строках, в которых определены мои переменные сеанса. Я посмотрел по сети / на стеке и на мой код, и я не могу понять, что не так! Я впервые определяю переменные сеанса из двух разных таблиц в одной странице документа / кода, поэтому я подозреваю, что это как-то связано с этим. Ниже приведен код PHP, из-за которого происходит ошибка:

<?php

    session_start();

    include('../includes/dbh.inc.php');


    $sql = 'SELECT * FROM shelfitems';
    $lqs = 'SELECT * FROM shelfwebsites';

    $result = mysqli_query($conn, $sql);
    $result2 = mysqli_query($conn, $lqs);

    $shelfitems = mysqli_fetch_all($result, MYSQLI_ASSOC);
    $shelfwebsites = mysqli_fetch_all($result2, MYSQLI_ASSOC);
    $shelfwebsite = mysqli_fetch_assoc($result2);
    $shelfitem = mysqli_fetch_assoc($result);

    $_SESSION['parent_id'] = $shelfitem['parent_id'];
    $_SESSION['folder'] = $shelfwebsite['folder'];
    $parent_id = $_SESSION['parent_id'];
    $folder = $_SESSION['folder'];
    mysqli_close($conn);

?>

Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 20 апреля 2020

Проблема в том, что mysqli_fetch_asso c возвращает NULL. Таким образом, ваши переменные $ shelfitem и $ shelfwebsite равны нулю

Чтобы избежать этой ошибки, вы можете проверить, есть ли какой-либо результат, прежде чем извлекать

if (mysqli_num_rows($result) > 0) {
    $shelfitem = mysqli_fetch_assoc($result);

    $_SESSION['parent_id'] = $shelfitem['parent_id'];
}

https://www.php.net/manual/en/mysqli-result.fetch-assoc.php https://www.php.net/manual/en/mysqli-result.num-rows.php

UPD

Причины, по которым результат может быть пустым

  1. Ваш запрос sql ничего не нашел , Проверьте, заполнены ли ваши таблицы
  2. . Вы уже прочитали $ result ранее, используя mysqli_fetch_all

. В настоящее время я не могу проверить вторую причину, но вы можете попробовать прокомментировать строки и проверить, будет работать

$shelfitems = mysqli_fetch_all($result, MYSQLI_ASSOC);
$shelfwebsites = mysqli_fetch_all($result2, MYSQLI_ASSOC);
...