البرمجة

كيفية حل مشكلة Undefined Property في PHP

عندما أقوم بإستدعاء الدالة التالية، أحصل على الخطأ التالي: “تنبيه: الخاصية غير معرفة: stdClass::$id”.

عندما تقوم بإستدعاء الدالة userlogin() التي قمت بتعريفها، يبدو أن هناك خطأ في الطريقة التي تقوم بها بالحصول على البيانات من الاستعلام SQL. في هذه الحالة، أعتقد أنك تحاول الحصول على البيانات باستخدام mysqli_fetch_field() ولكن هذه الدالة تقوم بإرجاع معلومات حول الحقل (field)، ليس البيانات الفعلية التي تبحث عنها.

بدلاً من ذلك، يجب عليك استخدام mysqli_fetch_assoc() أو mysqli_fetch_array() لاستعادة البيانات الفعلية من النتيجة المسترجعة من قاعدة البيانات. هذه الدوال تقوم بإرجاع صف من البيانات كمصفوفة مرتبطة بالأسماء (associative array) أو مصفوفة متكررة (indexed array)، حيث يمكنك الوصول إلى البيانات عن طريق أسماء الحقول أو الفهرس في المصفوفة.

لذلك، يجب عليك تعديل الجزء المشار إليه في الكود ليصبح كالتالي:

php
if($numrows == 1) { $data = mysqli_fetch_assoc($result); // تحصل هنا على صف واحد من البيانات كمصفوفة مرتبطة بالأسماء $uid = $data['id']; // تحصل هنا على قيمة الحقل id $uname = $data['username']; // تحصل هنا على قيمة الحقل username $_SESSION['login'] = 1; $_SESSION['uid'] = $uid; $_SESSION['uname'] = $uname; $_SESSION['login_msg'] = 'تم تسجيل الدخول بنجاح...'; }

بعد تعديل الكود بهذه الطريقة، يجب أن تتمكن من استرجاع البيانات بشكل صحيح وتخزينها في الـ session كما تريد.

المزيد من المعلومات

بالطبع! في الكود الذي قدمته، تقوم بتنفيذ استعلام SQL لاسترجاع بيانات المستخدم من جدول login_user بناءً على البريد الإلكتروني وكلمة المرور التي تم تمريرها إلى الدالة userlogin(). إذا كان عدد الصفوف المُرجعة من الاستعلام يساوي 1، فإنه يتم استرجاع البيانات باستخدام mysqli_fetch_field().

ومن الخطأ الذي تحصل عليه، يمكن أن نفهم أن $data هو كائن من النوع stdClass، وهذا يعني أن البيانات التي تم استرجاعها لا تتوافق مع هيكل البيانات الذي تتوقعه. يفترض أن تكون البيانات التي تم استرجاعها مصفوفة مرتبطة بالأسماء تحتوي على مفتاح id و username.

بالنظر إلى الكود، يمكن أن يكون السبب في هذا الخطأ هو أن mysqli_fetch_field() لا يسترجع صفوف النتائج بل يسترجع هيكل الحقول فقط. لذلك، يُفضل استخدام mysqli_fetch_assoc() لاسترجاع صف من البيانات كمصفوفة مرتبطة بالأسماء، ثم الوصول إلى الحقول باستخدام أسمائها كمفاتيح.

عند تصحيح هذا الجزء من الكود، ستتمكن من الوصول إلى بيانات المستخدم بشكل صحيح وتعيينها في الـ session كما تريد.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر