โปรแกรมที่มีคนใช้กันหลายคนจะมีโอกาสที่เกิดเหตุการณ์บันทึกข้อมูลผิดพลาดได้ง่าย
ให้ใช้ transaction ในการ commit ถ้าข้อมูลถูกต้องแล้ว เพื่อทำการบันทึกจริง
และ rollback เมื่อตรวจสอบแล้วพบว่าข้อมูลผิดพลาดเพื่อย้อนกลับไปเหมือนยังไม่เคยเกิดเหตุการ update ใดๆ
<?php
/*
CREATE TABLE `x` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(10) NOT NULL DEFAULT '0',
`qty` INT(10) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
)
ENGINE=InnoDB ROW_FORMAT=DEFAULT
*/
$rs = mysql_connect('localhost','root','');
mysql_select_db('xx');
mysql_query('set names utf8');
mysql_query('SET autocommit = 0');
mysql_query('START TRANSACTION');
mysql_query('update x set qty=qty-5');
$rs = mysql_query('select qty from x where id=1');
if (mysql_result($rs,0) > 0)
mysql_query('COMMIT');
else
mysql_query('ROLLBACK');
mysql_query('SET autocommit = 1');
?>
ไม่มีความคิดเห็น:
แสดงความคิดเห็น