"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية استرداد متغيرات الإخراج من إجراءات MySQL المخزنة في PHP باستخدام PDO؟

كيفية استرداد متغيرات الإخراج من إجراءات MySQL المخزنة في PHP باستخدام PDO؟

تم النشر بتاريخ 2024-11-18
تصفح:438

How to Retrieve Output Variables from MySQL Stored Procedures in PHP with PDO?

استرجاع متغيرات مخرجات الإجراء المخزن في PHP باستخدام PDO

الهدف: جلب قيمة LAST_INSERT_ID () من إجراء MySQL المخزن وتعيينها إلى متغير PHP.

بيان المشكلة

على الرغم من كود PHP المقدم باستخدام PDO الارتباطات، فإنه يفشل في التقاط متغير الإخراج LAST_INSERT_ID() من الإجراء المخزن البسيط.

شرح

جلب متغيرات الإخراج من إجراءات MySQL المخزنة في PHP PDO يتضمن عملية من مرحلتين:

    تنفيذ الإجراء المخزن وتعيين متغيرات الإخراج لمتغيرات مستخدم MySQL.
  1. الاستعلام متغيرات مستخدم MySQL لاسترداد قيمها في متغيرات PHP.
الحل: عملية من مرحلتين

المرحلة 1: تنفيذ الإجراء

$stmt = $db->prepare("CALL simpleProcedure(:name, @returnid)"); $stmt->bindValue(':name', $name, PDO::PARAM_STR); $stmt->bindParam(':returnid', $returnid, PDO::PARAM_INT, 11, PDO::PARAM_INOUT); // لاحظ PDO::PARAM_INOUT $stmt->execute();
$stmt = $db->prepare("CALL simpleProcedure(:name, @returnid)");
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':returnid', $returnid, PDO::PARAM_INT, 11, PDO::PARAM_INOUT);  // Note the PDO::PARAM_INOUT
$stmt->execute();
من خلال ربط العنصر النائب :returnid كـ INOUT، لن تقوم شركة PDO بتمرير متغير PHP إلى الإجراء فحسب، بل ستقوم أيضًا بتحديثه بقيمة متغير الإخراج.

المرحلة 2: استرداد متغير الإخراج$sql = "SELECT @returnid ASput_id"; $result = $db->query($sql)->fetch(PDO::FETCH_ASSOC); $lastInsertId = $result['output_id'];

$sql = "SELECT @returnid AS output_id";
$result = $db->query($sql)->fetch(PDO::FETCH_ASSOC);

$lastInsertId = $result['output_id'];

ملاحظة

ربط PHP يمكن أن تواجه متغيرات معلمات INOUT وOUT لإجراءات MySQL أخطاء في وقت التشغيل. يوصى بربط المتغيرات بمعلمات IN فقط.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3