اذهب إلى المحتوى

السؤال

نشر

سلام عليكم 

ادرس الآن ال functions و حاولت اطبق بعمل function احددلها ببساطة شديدة اسم الجدول و الحقل المطلوب و هي تجيبلي الداتا اللي جواه

الكود كالتالي

function getData($table,$data){

$q = "select * from $table";

$connect = mysqli_connect('localhost','root','','moh');

$result = $connect->query($q);

while ($row = mysqli_fetch_assoc($result)){
    return $row[$data];
}

}

سؤال رقم 1

لما جيت استدعي ال function بالطريقة دي

getData('user','id'); // Get Data From id field in table (user ) 

جاتلي رسالة خطأ 

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, bool given in 

الخطأ يشير الى السطر الخاص بحلقة while 

فلم يحدث معي هذا الخطأ

السؤال الثاني

انا اصلا معرف متغير connect و الخاص بالاتصال بقاعدة البيانات قبل كده بس من جوا الفانكشن مش راضي ياخده غير لما اعرفهوله من جديد فايه الحل ؟

 

شكرا لكم

Recommended Posts

  • 1
نشر
بتاريخ 5 دقائق مضت قال محمد الاهلي:

الكود كامل اهو اخي

المتغيرات التي يتم تعريفها داخل دالة غير مرئية خارجها، ما أقصده كالتالي:

<?php
function getData($table,$data){

  $connect = mysqli_connect('localhost','root','','moh');
  
  $q = "select * from $table";
  echo $q;
  
  $result= mysqli_query($connect, $q);
  echo $result;

  while ($rows = mysqli_fetch_assoc($result)){
    return $rows[$data];
  }

}

echo 'result: ' . getData('user','id');


 

 

  • 0
نشر

انتبه لما يلي:

يوجد نوعين من طرق التعامل مع إجرائيات mysqli بناء الاتصال واستخدامه حاول البحث عن 

  • PHP mysqli query() Function

في عملية الاتصال تقوم باستخدام Procedural style:

mysqli_connect

$con = mysqli_connect("localhost","my_user","my_password","my_db");

فعليه نتابع استخدام الإجرائيات بالشكل mysqli_query:

$result = mysqli_query($con, $q)

أي تمرير الاتصال مع كل دالة تستخدمه.

مشكلتك:

إن ما تحاول القيام به:

$connect->query($q);

هو من النوع Object oriented style:

$mysqli = new mysqli("localhost","my_user","my_password","my_db");
ثم يمكن العمل ك
$mysqli -> query(query, resultmode)

الذي يستخدم الاتصال ك كائن برمجي نطبق من خلاله الدوال.

عليك استخدام أحد الطريقتين

  • 0
نشر
بتاريخ 33 دقائق مضت قال محمد الاهلي:

لم تختلف اخي


Notice: Undefined variable: 

سواء لل q او لل result

أرجو إرفاق ما يتم طباعته ضمن تنفيذ الدالة لأتمكن من تحديد المشكلة

اطبع المتغيرات بعد تعريفهم وليس قبل.

  • 0
نشر

الكود كامل اهو اخي

<?php
function getData($table,$data){

    $q = "select * from $table";

    $connect = mysqli_connect('localhost','root','','moh');
    $result= mysqli_query($connect, $q);
//$result = $connect->query($q);

    while ($rows = mysqli_fetch_assoc($result)){
        return $rows[$data];
    }

}

getData('user','id');

echo $q;

echo $result;

 

  • 0
نشر
بتاريخ 1 دقيقة مضت قال محمد الاهلي:

هذه هي النتيجة

على الأغلب لايوجد بيانات في الجدول user تأكد من اسمه، فيعيد الاستعلام result = false

$result= mysqli_query($connect, $q);
echo $result;

// أضف هذا السطر
if (!$result) {
  printf("Error: %s\n", mysqli_error($con));
  exit();
}

while ($rows = mysqli_fetch_assoc($result)){
	return $rows[$data];
}

 

  • 0
نشر

بعتذر جدا

هو اسمه users و ليس user حقك عليا

الآن عدلت لكن جالي خطأ جديد

select * from users
Fatal error: Uncaught Error: Object of class mysqli_result could not be converted to string in C:\xampp\htdocs\moh\test.php:10 Stack trace: #0 C:\xampp\htdocs\moh\test.php(23): getData('users', 'id') #1 {main} thrown in C:\xampp\htdocs\moh\test.php on line 10

 

 

  • 0
نشر
 echo $result;

لما حطيته ككومنت اشتغلت الفنكشن

شكرا شكرا شكرا لوقتك اخي الفاضل 

و سامحني على التعب

كده ال فنكشن جابت اول نتيجة في الجدول بس

لو عاوزها اخليها تجيب كل اللي فيه الجدول بناء على الاستعلام اعمل ايه ؟

  • 0
نشر
بتاريخ 5 دقائق مضت قال محمد الاهلي:

كده ال فنكشن جابت اول نتيجة في الجدول بس

 

السبب أنها تعمل return ضمن الحلقة وبذلك يتوقف تنفيذها، يمكنك عمل تجميع للنتائج 

$final_result = "";

while ($rows = mysqli_fetch_assoc($result)){
	$final_result .= $rows[$data] . '<br>';
}

return $final_result;

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...