«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему я получаю сообщение об ошибке «Пытаюсь получить свойство, не являющееся объектом» при доступе к результатам базы данных?

Почему я получаю сообщение об ошибке «Пытаюсь получить свойство, не являющееся объектом» при доступе к результатам базы данных?

Опубликовано 18 ноября 2024 г.
Просматривать:920

Why am I getting the

Попытка доступа к свойству, не являющемуся объектом

При попытке получить данные из базы данных вы сталкиваетесь с ошибкой «Попытка получить свойство необъекта». Эта ошибка возникает, когда вы пытаетесь получить доступ к свойству нулевого или несуществующего объекта.

В вашем конкретном сценарии на странице управления имеется следующий код:

$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);
$sidemenus = mysql_fetch_object($results);

И на странице просмотра:

foreach ($sidemenus as $sidemenu): 
  echo $sidemenu->mname."<br />";
endforeach; 

Ошибка возникает из-за того, что mysql_fetch_object() возвращает объект, а не массив объектов. Таким образом, на странице «Просмотр» вы пытаетесь перебрать неперебираемый объект, что приводит к ошибке.

Решение:

Чтобы решить проблему, вы следует либо:

  • Преобразовать результат в array:
$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);

$sidemenus = array();
while ($sidemenu = mysql_fetch_object($results)) {
    $sidemenus[] = $sidemenu;
}

Это преобразует результаты в массив объектов, которые затем можно будет перебирать на странице просмотра.

  • Используйте PDO:

PDO обеспечивает более современный и эффективный способ взаимодействия с базами данных. PDOStatement::fetchAll(PDO::FETCH_OBJ) возвращает массив объектов, аналогичный функциональности, которую вы ожидали от mysql_fetch_object().

$stmt = $con->prepare("SELECT * FROM sidemenu WHERE `menu_id` = :menu_id ORDER BY `id` ASC LIMIT 1");
$stmt->bindParam(':menu_id', $menu);
$stmt->execute();

$sidemenus = $stmt->fetchAll(PDO::FETCH_OBJ);

Используя любое из этих решений, вы можете получить данные из базы данных и избежать ошибки «Попытка получить свойство, не являющееся объектом. "

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3