🚀 تخفیف ۳۵٪ + ۳.۵ میلیون هدیه! برنامه‌نویسی رو الان شروع کن - فقط امروز!
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ AmirAliDev
کارنکردن transaction
جامعه پی اچ پی ایجاد شده در ۱۲ تیر ۱۴۰۲

include_once "1-connection.php";
$userdata = [
    'fullname' => 'ali',
    'email' => 'ali@gmail.com',
    'username' => 'ali245',
    'password' => 'ali2345678',
    'age' => 19
];
// $sql = "INSERT INTO users (fullname,email,username,password,age) VALUES (?,?,?,?,?)";
// $stmt = $db->prepare($sql);
// $stmt->bindParam(1, $userdata['fullname'], PDO::PARAM_STR);
// $stmt->bindParam(2, $userdata['email'], PDO::PARAM_STR);
// $stmt->bindParam(3, $userdata['username'], PDO::PARAM_STR);
// $stmt->bindParam(4, $userdata['password'], PDO::PARAM_STR);
// $stmt->bindParam(5, $userdata['age'], PDO::PARAM_INT);
// $stmt->execute();
//----------------------------------------------------------------
$userdata1 = [
    'ali',
    'ali@gmail.com',
    'ali245',
    'ali2345678',
    19
];
// $sql = "INSERT INTO users (fullname,email,username,password,age) VALUES (?,?,?,?,?)";
// $stmt = $db->prepare($sql);
// $stmt->execute($userdata1);
//-----------------------------------------------------------------
// $userdata2 = [
//     'fullname' => 'mahdi',
//     'email' => 'mahdi@gmail.com',
//     'username' => 'mahdi245',
//     'password' => 'mkkg2345678',
//     'age' => 25
// ];
// $sql = "INSERT INTO users (fullname,email,username,password,age) VALUES (:fullname,:email,:username,:password,:age)";
// $stmt = $db->prepare($sql);
// $stmt->execute($userdata2);
// transaction in php
$sql = "INSERT INTO users (fullname,email,username,password,age) VALUES (?,?,?,?,?)";
$stmt = $db->prepare($sql);
$users = [
    ["sara", "sara@gmail.com", "sara154", "1237567", 18],
    ["changiz", "changiz@gmail.com", "changiz445", "1237567", 56],
    ["sara", "mohsen@gmail.com", "mohsendev", "1237567", 29]
];
$db->beginTransaction();
foreach ($users as $user) {
    $stmt->execute($user);
    if ($user[0] == "changiz") {
        exit();die;
    }
}
$db->commit();

متاسفانه کار نمیکنه سرچ هم کردم اکی نشد

سلام،

داخل foreach یک if نوشتید که کد وقتی برسه داخلش exit انجام میشه و اصلا commit اجرا نمیشه و rollback اتفاق می‌افتد.

if رو حذف کنید.

محسن موحد ۱۲ تیر ۱۴۰۲، ۱۸:۰۷

خب تو ویدیو هم همینجور نوشته


AmirAliDev ۱۲ تیر ۱۴۰۲، ۱۸:۱۰

دقیقه 17:50 رو ببینید، استاد میگن if مینویسم که commit اجرا نشه(اتفاق ناگواری بیوفته) و در ادامه نشون میده که if که اجرا میشه، رکورد جدیدی به دیتابیس اضافه نمیشه. و آیدی 34 باقی میمونه.

بهترین پاسخ
محسن موحد ۱۲ تیر ۱۴۰۲، ۱۸:۳۲