محاولة الوصول إلى خاصية غير كائن
أثناء محاولة استرداد البيانات من قاعدة بيانات، تواجه الخطأ "محاولة الحصول على خاصية من غير كائن." يحدث هذا الخطأ عند محاولة الوصول إلى خاصية كائن فارغ أو غير موجود.
في السيناريو الخاص بك، لديك التعليمة البرمجية التالية في صفحة التحكم الخاصة بك:
$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() يُرجع كائنًا، وليس مجموعة من الكائنات. لذلك، في صفحة العرض، تحاول التكرار على كائن غير قابل للتكرار، مما يؤدي إلى حدوث الخطأ.
الحل:
لحل المشكلة، عليك يجب إما:
$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; }
سيؤدي هذا إلى تحويل النتائج إلى مجموعة من الكائنات، والتي يمكنك بعد ذلك تكرارها في صفحة العرض الخاصة بك.
توفر شركة تنمية نفط عمان طريقة أكثر حداثة وكفاءة للتفاعل مع قواعد البيانات. تقوم 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