|
|
|
Transaction (Begin,Commit,RollBack) เช็คการส่งเมล์ และ insert เข้า ฐานข้อมูล |
|
|
|
|
|
|
|
สมมุติผมมี คิวรี insert อยู่ 2 คิวรี แล้วมี ฟังก์ชัน ส่งเมล์อยู่อีก 1
ถ้า insert ผ่านหมด แต่ส่งเมล์ไม่ผ่าน ฟังก์ชัน Transaction จะย้อนกลับไปเคลียค่าในตารางที่ insert ไปก่อนหน้านี้แล้วหรือไม่
Code (PHP)
<?
include('conn_mysql.php');
//*** Start Transaction ***//
mysql_query("BEGIN");
// ตารางที่ 1
$sql1 = "insert into booking_ticket (ticketID,bookingID,customerID,packageID,price,updateDate,enterDate)
VALUES ('"."T"."$strNextSeq11','"."B"."$strNextSeq50','$customerID','$package','$price',now(),'$enterDate');";
$objQuery1 = mysql_query($sql1)or die(mysql_error());
// ตารางที่ 2
$sql2 = "insert into booking_customer_condition (ticketID,condition_text,updateDate,enterDate)
VALUES ('"."T"."$strNextSeq11','$condition_text',now(),'$enterDate');";
$objQuery2 = mysql_query($sql2)or die(mysql_error());
// sant E-mail
$name_blu = "Blunagaracha";
$strTo = "[email protected]";
$strSubject = "Booking invoices";
$txtFormEmail = "[email protected]";
$strHeader = "";
$strHeader = 'MIME-Version: 1.0' . "\r\n";
$strHeader = "Content-type: text/html; charset=UTF-8\n";
$strHeader .= "From: Info<".$txtFormEmail.">\nReply-To: ".$txtFormEmail."\r\n";
$strMessage = "good";
$flgSend = @mail($strTo,$strSubject,$strMessage,$strHeader);
if(($objQuery1) and ($objQuery2) and ($flgSend))
{
//*** Commit Transaction ***//
mysql_query("COMMIT");
echo "Save Done.";
}
else
{
//*** RollBack Transaction ***//
mysql_query("ROLLBACK");
echo "Error Save [".$objQuery1.$objQuery2."]";
}
?>
Tag : PHP
|
|
|
|
|
|
Date :
2012-06-25 13:08:04 |
By :
beer656 |
View :
1166 |
Reply :
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
transaction จะตรวจแต่ฐานข้อมูลครับ
ถ้าส่งเมลไม่ผ่านมันจะ return false ไม่ใช่เหรอครับ ใช้อันนั้นเช็คเอาแล้ว delete from db ดีกว่า
|
|
|
|
|
Date :
2012-06-25 13:15:11 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<?php
include('conn_mysql.php');
//*** Start Transaction ***//
mysql_query("BEGIN");
// ตารางที่ 1
$sql1 = "insert into booking_ticket (ticketID,bookingID,customerID,packageID,price,updateDate,enterDate)
VALUES ('"."T"."$strNextSeq11','"."B"."$strNextSeq50','$customerID','$package','$price',now(),'$enterDate');";
// ตารางที่ 2
$sql2 = "insert into booking_customer_condition (ticketID,condition_text,updateDate,enterDate)
VALUES ('"."T"."$strNextSeq11','$condition_text',now(),'$enterDate');";
// sant E-mail
$name_blu = "Blunagaracha";
$strTo = "[email protected]";
$strSubject = "Booking invoices";
$txtFormEmail = "[email protected]";
$strHeader = "";
$strHeader = 'MIME-Version: 1.0' . "\r\n";
$strHeader = "Content-type: text/html; charset=UTF-8\n";
$strHeader .= "From: Info<".$txtFormEmail.">\nReply-To: ".$txtFormEmail."\r\n";
$strMessage = "good";
$flgSend = @mail($strTo,$strSubject,$strMessage,$strHeader);
if($flgSend)
{
//*** Commit Transaction ***//
$objQuery1 = mysql_query($sql1)or die(mysql_error());
$objQuery2 = mysql_query($sql2)or die(mysql_error());
mysql_query("COMMIT");
echo "Save Done.";
}
else
{
//*** RollBack Transaction ***//
mysql_query("ROLLBACK");
echo "Error Save [".$objQuery1.$objQuery2."]";
}
?>
แบบนี้ไม่ทราบว่า ได้หรือไหม ถูกหรือผิดครับ
|
ประวัติการแก้ไข 2012-06-25 15:13:00
|
|
|
|
Date :
2012-06-25 15:12:30 |
By :
beer656 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าเป็นหนู หนูจะทำแบบง่าย ๆ
เพิ่มข้อมูล แล้วเก็บค่า id ที่เพิ่มเข้าไปไว้
ทำการส่งเมล์ แล้วเชคว่า ผ่านหรือไม่
ถ้าไม่ผ่าน หนูจะสั่ง delete ตาม id ที่เพิ่มเมื่อกี้ เลย
แหะๆ ไม่ต้องมานั่ง กินบี BEGIN
|
|
|
|
|
Date :
2012-06-25 15:23:19 |
By :
Th@iDev |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|