دليل للوصول إلى قيم OUT في PHP مع إجراءات MySQL المخزنة

يمكن أن تعزز إجراءات التخزين في MySQL فعالية تفاعلات قاعدة البيانات الخاصة بك بشكل كبير. ومع ذلك، إذا كنت تعمل مع معلمات OUT، قد تجد صعوبة في استرداد قيمها باستخدام PHP. في هذا المنشور، سنستكشف كيفية الوصول إلى هذه المعلمات OUT بفعالية، مما يوفر لك دليلًا واضحًا خطوة بخطوة.

فهم المشكلة

عندما تنشئ إجراءً مخزنًا في MySQL، يمكن أن يحتوي على معلمات إدخال (IN) ومعلمات إخراج (OUT). تم تصميم معلمات OUT لإرجاع القيم من الإجراء المخزن إلى المتصل. للأسف، فإن الوثائق المتعلقة بالتفاعل بين PHP وإجراءات MySQL المخزنة غالبًا ما تكون غير كافية، مما يجعل من الصعب استرداد هذه المعلمات OUT بفعالية.

تبسيط المشكلة

على سبيل المثال، إذا كان لديك إجراء مخزن محدد على النحو التالي:

myproc(IN i int, OUT j int)

قد تتساءل، “كيف يمكنني الوصول إلى القيمة الناتجة ‘j’ من هذا الإجراء باستخدام PHP؟”

الحل: الوصول إلى معلمات OUT

للحصول على قيمة معلمة OUT في MySQL باستخدام امتداد MySQLi في PHP، يمكنك اتباع الخطوات الموضحة أدناه.

الخطوة 1: إنشاء اتصال بقاعدة البيانات

أولاً، تحتاج إلى الاتصال بقاعدة بيانات MySQL باستخدام فئة mysqli. استخدم القالب التالي:

$mysqli = new mysqli("HOST", "USR", "PWD", "DBNAME");

تأكد من استبدال HOST و USR و PWD و DBNAME ببيانات اعتماد قاعدة البيانات الفعلية الخاصة بك.

الخطوة 2: استدعاء الإجراء المخزن

ستقوم باستدعاء الإجراء المخزن الخاص بك أثناء اختيار قيمة معلمة OUT. إليك كيفية القيام بذلك:

$ivalue = 1; // القيمة المدخلة للإجراء
$res = $mysqli->multi_query("CALL myproc($ivalue, @x); SELECT @x");

في هذا الجزء:

  • @x هي متغير معرف من قبل المستخدم في MySQL سيخزن القيمة الناتجة.

الخطوة 3: معالجة النتائج

بعد تنفيذ استدعاء الإجراء المخزن باستخدام multi_query، تحتاج إلى التعامل مع النتائج. يتضمن ذلك التحقق من نجاح الاستدعاء واسترداد قيمة معلمة الإخراج:

if ($res) {
  $results = 0;
  do {
    if ($result = $mysqli->store_result()) {
      printf("<b>النتيجة #%u</b>:<br/>", ++$results);
      while ($row = $result->fetch_row()) {
        foreach ($row as $cell) echo $cell, "&nbsp;";
      }
      $result->close();
      if ($mysqli->more_results()) echo "<br/>";
    }
  } while ($mysqli->next_result());
}
$mysqli->close();

تفسير الكود:

// - نستخدم حلقة للتنقل عبر النتائج واستردادها واحدة تلو الأخرى. // - تستخدم دالة store_result() لاسترداد مجموعة النتائج من الاستعلام المنفَّذ. // - بعد معالجة مجموعة النتائج، نقوم بإغلاقها والتحقق من وجود المزيد من النتائج، والتي قد تتضمن معلمة OUT.

// أخيرًا، أغلق اتصال قاعدة البيانات مع $mysqli->close();.

الخاتمة

قد يبدو الوصول إلى القيم OUT من إجراءات MySQL المخزنة في PHP مرهقًا في البداية، ولكن باستخدام الطريقة المذكورة أعلاه، يمكنك تحقيق ذلك بسهولة. يتضمن الأسلوب إنشاء اتصال، واستدعاء الإجراء المخزن إلى جانب المتغير المعرف من قبل المستخدم، ومعالجة النتائج بعناية. يجب أن يكون هذا الدليل خطوة بخطوة مرجعًا مفيدًا للمطورين الذين يتعاملون مع إجراءات PHP وMySQL المخزنة.

إذا كنت ترغب في التعمق في هذا الموضوع أو لديك أي أسئلة أخرى تتعلق بـ PHP وMySQL، فلا تتردد في استكشاف مدونتنا أو ترك تعليق لنا أدناه!