لا يعمل RollBack () و startTransaction () في PHP PDO الخاص بي

0

RollBack () و beginTransaction() لا يعمل في PHP PDO ونوع الجدول الخاص بي هو innoDB . في الكود التالي بلدي $sql1 هو الصحيح وبلدي $sql2 خطأ (أضفت d إلى $last_id لجعله خطأ). لكنها لا تزال تنفذ sql1 مما يعني عدم التراجع. شكرا لك على نصيحتك.

<?php

include 'connect.php';
// Get multiple input field's value



try {
   // set the PDO error mode to exception
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


   // Starts our transaction
   $conn->beginTransaction();

   foreach ($_POST['phone'] as $value) {

       $sql1 = "INSERT INTO tbl_contact_info (type)
       VALUES ('$value')";    

       // use exec() because no results are returned
       $conn->exec($sql1);
       $last_id = $conn->lastInsertId();

       $sql2="INSERT INTO tbl_img (img_type)
       VALUES ('$dlast_id')";    

       $conn->exec($sql2);    

   }
   // Commits out queries
   $conn->commit();
   echo "New record created successfully";    

}

catch(PDOException $e)
   {
   // Something borked, undo the queries!!    
   $conn->rollBack();    

   echo $sql . "<br>" . $e->getMessage();
   }

$conn = null;
?>

1 إجابة

0

بادئ ذي بدء (وآسف أنه من الواضح لكنني أدركت أنه ليس واضحًا دائمًا للجميع) SQL و PHP لغات مختلفة. لن يتفاعل MySQL Server مع إشعارات المتغيرات غير المحددة التي يتم تشغيلها في كود PHP.

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

:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام