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

السؤال

نشر

سلام عليكم

عندي استعلام كالتالي

$query = 'SELECT order_threads.*, 
order_threads.mPrice AS p,
admins.name AS user,
thread.image ,
thread.name,
thread.mPrice AS tp,
patron_colors.color_name AS color_name,
patron_colors.color_count
FROM order_threads
LEFT JOIN admins ON order_threads.user = admins.id
JOIN patron_colors ON order_threads.color_select = patron_colors.id

JOIN thread 
ON 
order_threads.thread_id = thread.id  WHERE order_threads.order_id=' .$order['id']. ' ;';

$threads = $conn->query($query);

الإستعلام مفيش فيه اي مشكلة غير انني اقوم تقريبا بتكراره فوق ال 20 مرة بنفس الطريقة بس اللي بيختلف فقط جدول order_threads و thread 

قلت اجرب اعمل دالة مخصوصة و استدعيها كالتالي

function connecting($order_table,$table){

    global $order_id ;
    global $conn;

$query_var = 'SELECT 

'.$order_table.'.*, 
'.$order_table.'.price AS price,
admins.name AS user,
patron_colors.color_name AS color_name,
patron_colors.color_count
FROM 
'.$order_table.'
LEFT JOIN admins ON '.$order_table.'.user = admins.id
JOIN
'.$table.'
ON
'.$order_table.'.'.$order_table.'_id = '.$table.'.id
JOIN patron_colors ON '.$order_table.'.color_select = patron_colors.id
WHERE 
'.$order_table.'.order_id=' .$order_id . ' ORDER BY '.$order_table.'.id ASC;';

$run = $conn->query($query_var);
}

متغير order_table  هايحل محل order_threads و table هايحل محل threads و هايبدلهملي بالاسماء الجديدة للجداول اللي عاوز اجيب منها الداتا بنفس باقي بيانات الاستعلام 

و متغير $run  هو تنفيذ ال query 

لما باجي بنفذ الامر و استدعي الدالة كالتالي

connecting('order_bracelet','bracelet');

و ابدأ استدعي البيانات 

foreach ($run AS $row ){

// code here

}

مفيش اي قراءه نهائي و لا كأن فيه استعلام اصلا

ايه الخطأ اللي انا عملته احبائي الكرام ؟

Recommended Posts

  • 1
نشر

ليس تماما، الاستعلام يحدث بالفعل ويتم تنفيذه غير أنه لا يتم التقاط عائده من على خارج الدالة.

فالمشكلة هنا هي أنك تحاول الوصول الى متغير محلي local variable من على خارج نطاق الدالة function scope. وللوصول اليه اظنك ستحتاج ضبطه كعائد للدالة التي تقوم بتوصيفها. فيكون ذلك كـ:

function connecting($order_table,$table){

    global $order_id ;
    global $conn;

$query_var = 'SELECT 

'.$order_table.'.*, 
'.$order_table.'.price AS price,
admins.name AS user,
patron_colors.color_name AS color_name,
patron_colors.color_count
FROM 
'.$order_table.'
LEFT JOIN admins ON '.$order_table.'.user = admins.id
JOIN
'.$table.'
ON
'.$order_table.'.'.$order_table.'_id = '.$table.'.id
JOIN patron_colors ON '.$order_table.'.color_select = patron_colors.id
WHERE 
'.$order_table.'.order_id=' .$order_id . ' ORDER BY '.$order_table.'.id ASC;';

$run = $conn->query($query_var);

return $run;
}

الآن ستحتاج استقبال عائد الدالة وتخزينه في متغير:

$run = connecting('order_bracelet','bracelet');

وأخيرا استعماله في المرور على الصفوف الناتجة:

foreach ($run AS $row ){

// code here

}

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...