Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 107,660

HOME > PHP > PHP MySQL สอน PHP กับ MySQL > PHP MySQL Transaction (Begin,Commit,RollBack)





Clound SSD Virtual Server

PHP MySQL Transaction (Begin,Commit,RollBack)

PHP MySQL Transaction (Begin,Commit,Rollback) ตัวอย่างนี้จะเป็นการเขียนโปรแกรม PHP กับ MySQL ใช้งาน Transaction ในการตรวจสอบความถูกต้องก่อนการทำการบันทึกข้อมูลจริง หลักการคือ เมื่อมีการ Begin แล้ว ภายใต้คำสั่งที่อยู่ในเงื่อนไนนี้จะมีการตรวจสอบว่ามีการทำงานถูกต้อง หรือมีข้อผิดพลาดหรือไม่ ถ้าไม่มีข้อผิดพลาดก็จะทำการ Commit หรือถ้ามีข้อผิดพลาดโปรแกรมจะทำการ Rollback คือยกเลิกข้อมูลที่ได้ทำการกระทำในแต่แรก

Syntax
//*** Start Transaction ***//
mysql_query("BEGIN");

//*** Commit Transaction ***//
mysql_query("COMMIT")

//*** RollBack Tranasction ***//
mysql_query("ROLLBACK")


เพิ่มเติม
ในการใช้งาน Transaction จะต้องกำหนดชนิดของ Table เป็นแบบ InnoDB

InnoDB Syntax
CREATE TABLE `customer` (
.
.
.
.
) ENGINE=InnoDB;


กรณีมีข้อผิดพลาด MySQL said: Documentation
#1289 - The 'InnoDB' feature is disabled; you need MySQL built with 'InnoDB' to have it working



Quote:
ให้ทำการเปิดไฟล์ my.ini (C:\AppServ\MySQL\my.ini)

skip-innodb

แก้เป็น

#skip-innodb


### Restart MySQL Service ###









ตัวอย่าง
ตัวอย่างนี้จะเป็นการเพิ่มข้อมูล โดยผมได้สมมุติการเพิ่มข้อมูลซ้ำ ซึ่งมี Primary Key ชื่อ CustomerID ซึ่งจะสามารถเพิ่มข้อมูลสำเร็จใน Statement แรก และ Statement ที่ 2 จะไม่สามารถเพิ่มข้อมูลได้ และเมื่อมีการ RollBack ข้อมูล Statement แรกที่ถูก Insert ไปแล้วก็จะถูกยกเลิกในทันที สำหรับการใช้ Transaction สามารถใช้ได้ทั้งการ Insert/Update/Delete Record

phpMySQLTransactionAddForm.php

<html>
<head>
<title>ThaiCreate.Com PHP & MySQL Tutorial</title>
</head>
<body>
<form action="phpMySQLTransactionAddSave.php" name="frmAdd" method="post">
<table width="600" border="1">
  <tr>
    <th width="91"> <div align="center">CustomerID </div></th>
    <th width="160"> <div align="center">Name </div></th>
    <th width="198"> <div align="center">Email </div></th>
    <th width="97"> <div align="center">CountryCode </div></th>
    <th width="70"> <div align="center">Budget </div></th>
    <th width="70"> <div align="center">Used </div></th>
  </tr>
  <tr>
    <td><div align="center"><input type="text" name="txtCustomerID" size="5"></div></td>
    <td><input type="text" name="txtName" size="20"></td>
    <td><input type="text" name="txtEmail" size="20"></td>
    <td><div align="center"><input type="text" name="txtCountryCode" size="2"></div></td>
    <td align="right"><input type="text" name="txtBudget" size="5"></td>
    <td align="right"><input type="text" name="txtUsed" size="5"></td>
  </tr>
  </table>
  <input type="submit" name="submit" value="submit">
  </form>
</body>
</html>

Screenshot

PHP & MySQL



phpMySQLTransactionAddSave.php

<html>
<head>
<title>ThaiCreate.Com PHP & MySQL Tutorial</title>
</head>
<body>
<?php
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("mydatabase");

//*** Start Transaction ***//
mysql_query("BEGIN");

//***  Query 1 ***//
$strSQL = "INSERT INTO customer ";
$strSQL .="(CustomerID,Name,Email,CountryCode,Budget,Used) ";
$strSQL .="VALUES ";
$strSQL .="('".$_POST["txtCustomerID"]."','".$_POST["txtName"]."','".$_POST["txtEmail"]."' ";
$strSQL .=",'".$_POST["txtCountryCode"]."','".$_POST["txtBudget"]."','".$_POST["txtUsed"]."') ";
$objQuery1 = mysql_query($strSQL);

$strSQL = "INSERT INTO customer ";
$strSQL .="(CustomerID,Name,Email,CountryCode,Budget,Used) ";
$strSQL .="VALUES ";
$strSQL .="('".$_POST["txtCustomerID"]."','".$_POST["txtName"]."','".$_POST["txtEmail"]."' ";
$strSQL .=",'".$_POST["txtCountryCode"]."','".$_POST["txtBudget"]."','".$_POST["txtUsed"]."') ";
$objQuery2 = mysql_query($strSQL);

if(($objQuery1) and ($objQuery2))
{
	//*** Commit Transaction ***//
	mysql_query("COMMIT");
	echo "Save Done.";
}
else
{
	//*** RollBack Transaction ***//
	mysql_query("ROLLBACK");
	echo "Error Save [".$strSQL."]";
}
mysql_close($objConnect);
?>
</body>
</html>

Screenshot

Error Message
Error Save [INSERT INTO customer (CustomerID,Name,Email,CountryCode,Budget,Used) VALUES ('C005','Weerachai Nukitram','[email protected]' ,'TH','2000000','100000') ]


PHP & MySQL








Note! สำหรับ function ของ mysql
เนื่องจาก function ของ mysql จะถูก deprecated ใน version ใหม่ ๆ ฉะนั้นแนะนำให้เปลี่ยนไปใช้ function ของ mysqli
อ่านเพิ่มเติม : PHP MySQL Database (mysqli)


   
Share


ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท


ลองใช้ค้นหาข้อมูล


   


Bookmark.   
       
  By : ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ)
  Score Rating :  
  Create/Update Date : 2009-01-15 12:18:01 / 2017-03-14 15:51:57
  Download : Download  PHP MySQL Transaction (Begin,Commit,RollBack)
 Sponsored Links / Related

 
PHP MySQL Connect to Database
Rating :

 
PHP MySQL List Table Properties
Rating :

 
PHP MySQL List Record
Rating :

 
PHP MySQL Random Record
Rating :

 
PHP MySQL List Record Paging/Pagination
Rating :

 
PHP MySQL Search Record
Rating :

 
PHP MySQL Search Record Paging/Pagination
Rating :

 
PHP MySQL Multiple Column
Rating :

 
PHP MySQL Multiple Column and Paging/Pagination
Rating :

 
PHP MySQL Add/Insert Record
Rating :

 
PHP MySQL Add/Insert Multiple Record
Rating :

 
PHP MySQL Check Already Exists Add/Insert Record
Rating :

 
PHP MySQL Edit/Update Data Record
Rating :

 
PHP MySQL Multiple Rows Edit/Update Record
Rating :

 
PHP MySQL Delete Record/Confirm Delete
Rating :

 
PHP MySQL Multiple Checkbox Delete Record
Rating :

 
PHP MySQL Add/Insert/Edit/Delete to MySQL On Same Form
Rating :

 
PHP MySQL Used Require/Include
Rating :

 
PHP MySQL Used Function Database Query
Rating :

 
PHP MySQL Database Class
Rating :

 
PHP MySQL (PHP กับ MySQL ภาษาไทย Thai Support)
Rating :

 
PHP MySQL : Upload file to MySQL
Rating :

 
PHP MySQL : Upload PDF Files to MySQL
Rating :

 
PHP MySQL Multiple Upload File to MySQL Database - CreateElement Input File Upload
Rating :

 
PHP MySQL DropDownList / Listmenu / ListBox
Rating :

 
PHP MySQL : Row No and Line Number
Rating :

 
PHP MySQL Upload File to MySQL Database - Multiple Dynamic CreateElement Input File Upload
Rating :

 
PHP MySQL : Move Option List/ListMenu
Rating :

 
PHP MySQL : Dependent List Menu
Rating :

 
PHP MySQL : Counter
Rating :

 
PHP MySQL : Sort Data
Rating :

 
PHP MySQL : Login and Registration
Rating :


ThaiCreate.Com Forum


Comunity Forum Free Web Script
Jobs Freelance Free Uploads
Free Web Hosting Free Tools

สอน PHP ผ่าน Youtube ฟรี
สอน Android การเขียนโปรแกรม Android
สอน Windows Phone การเขียนโปรแกรม Windows Phone 7 และ 8
สอน iOS การเขียนโปรแกรม iPhone, iPad
สอน Java การเขียนโปรแกรม ภาษา Java
สอน Java GUI การเขียนโปรแกรม ภาษา Java GUI
สอน JSP การเขียนโปรแกรม ภาษา Java
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน .Net การเขียนโปรแกรม ภาษา .Net
Free Tutorial
สอน Google Maps Api
สอน Windows Service
สอน Entity Framework
สอน Android
สอน Java เขียน Java
Java GUI Swing
สอน JSP (Web App)
iOS (iPhone,iPad)
Windows Phone
Windows Azure
Windows Store
Laravel Framework
Yii PHP Framework
สอน jQuery
สอน jQuery กับ Ajax
สอน PHP OOP (Vdo)
Ajax Tutorials
SQL Tutorials
สอน SQL (Part 2)
JavaScript Tutorial
Javascript Tips
VBScript Tutorial
VBScript Validation
Microsoft Access
MySQL Tutorials
-- Stored Procedure
MariaDB Database
SQL Server Tutorial
SQL Server 2005
SQL Server 2008
SQL Server 2012
-- Stored Procedure
Oracle Database
-- Stored Procedure
SVN (Subversion)
แนวทางการทำ SEO
ปรับแต่งเว็บให้โหลดเร็ว


สุดยอด Source Code V2.0
 

แจ้งชำระเงิน/โอนเงิน
 

Hit Link
   







Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2019 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่