> 데이터 베이스 > MySQL 튜토리얼 > PHP에서 '객체가 아닌 속성을 가져오려는 중' 오류가 발생하는 이유는 무엇입니까?

PHP에서 '객체가 아닌 속성을 가져오려는 중' 오류가 발생하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-05 00:02:11
원래의
630명이 탐색했습니다.

Why Am I Getting a

"비객체의 속성을 얻으려고 시도 중" - 문제 이해

"비객체의 속성을 얻으려고 시도 중" 오류 일반적으로 존재하지 않는 개체의 속성에 액세스하려고 할 때 발생합니다. 귀하의 경우 이 문제는 아래 코드에서 발생합니다.

<?php
  include 'pages/db.php';
  $results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);
  $sidemenus = mysql_fetch_object($results);
?>
로그인 후 복사

이 코드를 실행할 때 문제는 mysql_fetch_object() 사용에 있습니다. 이 함수는 사이드 메뉴 테이블의 단일 행에 대한 객체 표현을 반환하지만 보기 페이지에서 객체 배열로 이를 반복하려고 합니다.

<?php foreach ($sidemenus as $sidemenu): ?>
  <?php echo $sidemenu->mname."<br />"; ?>
<?php endforeach; ?>
로그인 후 복사
로그인 후 복사

문제 해결

이 오류를 해결하려면 테이블에서 필요한 모든 행을 검색하여 배열에 저장해야 합니다. while 루프를 사용하여 결과를 반복하고 관련 개체로 배열을 채우면 이를 달성할 수 있습니다.

$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;
}
로그인 후 복사

보기 페이지에서 이 개체 배열을 사용하면 이를 반복하고 액세스할 수 있습니다. 각 개체의 속성:

<?php foreach ($sidemenus as $sidemenu): ?>
  <?php echo $sidemenu->mname."<br />"; ?>
<?php endforeach; ?>
로그인 후 복사
로그인 후 복사

대체 접근 방식 PDO

이 상황을 처리하기 위한 또 다른 옵션은 보다 현대적이고 객체 지향적인 데이터베이스 상호 작용을 제공하는 PHP의 PDO 확장을 사용하는 것입니다. PDO를 사용하면 사이드 메뉴 테이블에서 모든 행을 가져와 다음과 같이 배열에 저장할 수 있습니다.

$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');

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

$sidemenus = $stmt->fetchAll(PDO::FETCH_OBJ);
로그인 후 복사

이 코드에서:

  • PDO 클래스는 다음과 같이 인스턴스화됩니다. 데이터베이스에 연결합니다.
  • prepare() 메소드는 SQL을 준비하는 데 사용됩니다. query.
  • execute() 메소드는 제공된 매개변수를 사용하여 쿼리를 실행합니다.
  • fetchAll(PDO::FETCH_OBJ) 메소드는 모든 결과를 객체 배열로 가져옵니다.

그런 다음 앞서 설명한 방법과 유사하게 보기 페이지에서 이 개체 배열을 사용할 수 있습니다.

위 내용은 PHP에서 '객체가 아닌 속성을 가져오려는 중' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿