PHP-5 ติดต่อฐานข้อมูล MYSQL 1 1
MySQL Introduction ทำความรู้จักกับฐานข้อมูล MySQL (มายเอสคิวแอล) เป็นระบบจัดการฐานข้อมูลโดยใช้ภาษา SQL. แม้ว่า MySQL เป็นซอฟต์แวร์โอเพนซอร์ส แต่แตกต่างจากซอฟต์แวร์โอเพนซอร์สทั่วไป โดยมีการ พัฒนาภายใต้บริษัท MySQL AB ในประเทศสวีเดน โดยจัดการ MySQL ทั้งในแบบที่ให้ ใช้ฟรี และแบบที่ใช้ในเชิงธุรกิจ MySQL สร้างขึ้นโดยชาวสวีเดน 2 คน และชาวฟินแลนด์ ชื่อ David Axmark, Allan Larsson และ Michael "Monty" Widenius. ปัจจุบันบริษัทซันไมโครซิสเต็มส์ (Sun Microsystems, Inc.) เข้าซื้อกิจการของ MySQL AB เรียบร้อยแล้ว ฉะนั้นผลิตภัณฑ์ภายใต้ MySQL AB ทั้งหมดจะตกเป็นของซัน 2 2
รุ่นของผลิตภัณฑ์ รุ่นของผลิตภัณฑ์นั้นแบ่งออกมาได้สามสายการผลิต ได้แก่ เวอร์ชันใช้ฟรี เวอร์ชันการค้า และเวอร์ชันที่สนับสนุนกับผลิตภัณฑ์ SAP (MAX DB) ความแตกต่างคือเวอร์ชันคอมมิวนิตี้นั้นสามารถนำไปใช้งานได้ฟรีแต่ขาด การสนับ สนุนหรือการช่วยเหลือเมื่อมีปัญหาเกิดขึ้น, เวอร์ชันที่เป็นคอม เมอร์เชียลนั้นให้บริการด้านความสนับสนุนเมื่อมีปัญหา (ซื้อบริการ) สรุป คร่าวๆ ประเภทดาต้าเบสให้เลือกใช้ดังนี้ * MySQL เอนเทอร์ไพรส์ Enterprise * MySQL คลัสเตอร์ Cluster * MySQL Embedded * MySQL Community (opensource เวอร์ชัน) 3 3
ความสามารถที่เพิ่มขึ้น ในเวอร์ชัน 5 ความสามารถที่เพิ่มขึ้น ในเวอร์ชัน 5.0 มีความสามารถหลายอย่างที่สำคัญสำหรับระบบฐานข้อมูลขนาดใหญ่ หรือระดับองค์กร (EnterPrise Feature) เช่น Store Procedure, database trigger, database view, database schema ซึ่งได้มีการปรับเพิ่มประสิทธิภาพในส่วนของตารางและการทำ ดัชนี (index) ขึ้นมาอีก ปัจจุบันเวอร์ชัน community หรือเวอร์ชันที่เสถียร (stable) 5.0 และเวอร์ชันทดสอบคือ 5.1 beta release และ 5.2 Alpha ตั้งแต่เวอร์ชัน 5.1 เริ่มสนับสนุนการทำ Parttion Database , ตารางเวลาสำหรับเหตุการณ์ ต่างๆ (Event schedule) 4 4
ประเภทการจัดเก็บข้อมูล (Database Storage Engine) ที่สนับสนุน * MyISAM ค่าปกติ (default) * InnoDB สนับสนุนการทำ ทรานแซคชั่น (transaction) แบบ ACID * Memory การจัดเก็บในหน่วยความจำ ใช้เป็นตารางชั่วคราวเพื่อความรวดเร็ว เนื่องจากเก็บไว้ในหน่วยความจำ ทำให้มีความเร็วในการทำงานสูงมาก * Merge * Archive เหมาะสำหรับการจัดเก็บข้อมูลพวก log file,ข้อมูลที่ไม่ต้องมีการ คิวรี่ (query) หรือใช้บ่อยๆ เช่น log file เพื่อประโยชน์ในการตรวจสอบย้อนหลัง (Security Audit Information) * Federated สำหรับการจัดเก็บแบบปลายทาง (remote server) แทนที่จะเป็นการจัดเก็บ แบบ local เหมือนการจัดเก็บ (Storage) แบบอื่นๆ * NDB สำหรับการจัดเก็บแบบ คลัสเตอร์(cluster) * CSV เก็บข้อมูลจาก Text ไฟล์โดยอาศัยเครื่องหมาย คอมมา (comma) เป็นตัวแบ่ง ฟิลด์ * Blackhole * Example 5 5
ชนิดของข้อมูลที่สนับสนุน ชนิดข้อมูลที่ MySQL สนับสนุนแบ่งเป็นสามประเภทหลักใหญ่ๆ ชนิดข้อมูลที่เป็นตัวเลข o BIT (มีใช้ได้กับ MyISAM, InnoDB, Memory) o TINYINT o SMALLINT o MEDIUMINT o INT o BIGINT 6 6
* ชนิดข้อมูลที่เกี่ยวกับวันที่และเวลา o DATETIME o DATE o TIMESTAMP o TIME o YEAR ชนิดข้อมูลที่เกี่ยวกับตัวอักษร o CHAR o VARCHAR o BINARY o VARBINARY o BLOB o TEXT o ENUM o SET 7 7
การใช้งาน MySQL เป็นที่นิยมใช้กันมากสำหรับฐานข้อมูลสำหรับเว็บไซต์ เช่น มีเดียวิกิ และ phpBB และนิยมใช้งานร่วมกับภาษาโปรแกรม PHP ซึ่งมักจะได้ชื่อว่าเป็นคู่ จะเห็นได้ จากคู่มือคอมพิวเตอร์ต่างๆ ที่จะสอนการใช้งาน MySQL และ PHP ควบคู่กันไป นอกจากนี้ หลายภาษาโปรแกรมที่สามารถทำงานร่วมกับฐานข้อมูล MySQL ซึ่งรวมถึง ภาษาซี ซีพลัสพลัส ปาสคาล ซีชาร์ป ภาษาจาวา ภาษาเพิร์ล พีเอชพี ไพทอน รูบี และ ภาษาอื่น ใช้งานผ่าน API สำหรับโปรแกรมที่ติดต่อผ่าน ODBC หรือ ส่วนเชื่อมต่อกับ ภาษาอื่น (database connector) เช่น เอเอสพี สามารถเรียกใช้ MySQL ผ่านทาง MyODBC,ADO,ADO.NET เป็นต้น โปรแกรมช่วยในการจัดการฐานข้อมูล และ ทำงานกับฐานข้อมูล ในการจัดการฐานข้อมูล MySQL คุณสามารถใช้โปรแกรมแบบ command-line เพื่อ จัดการฐานข้อมูล (โดยใช้คำสั่ง: mysql และ mysqladmin เป็นต้น). หรือจะดาวน์โหลด โปรแกรมจัดการฐานข้อมูลแบบ GUI จากเว็บไซต์ของ MySQL ซึ่งคือโปรแกรม: MySQL Administrator และ MySQL Query Browser. เป็นต้น 8 8
ส่วนเชื่อมต่อกับภาษาการพัฒนาอื่น (database connector) มีส่วนติดต่อ (interface) เพื่อเชื่อมต่อกับภาษาในการพัฒนา อื่นๆ เพื่อให้เข้าถึงฟังก์ชันการ ทำงานกับฐานข้อมูล MySQL ได้เช่น ODBC (Open Database Connector) อันเป็นมาตรฐาน กลางที่กำหนดมาเพื่อให้ใช้เป็นสะพานในการเชื่อมต่อกับโปรแกรม หรือระบบอื่นๆ เช่น MyODBC อันเป็นไดรเวอร์เพื่อใช้สำหรับการเชื่อมต่อในระบบปฏิบัติการวินโดว์, JDBC คลาสส่วนเชื่อมต่อสำหรับ Java เพื่อใช้ในการติดต่อกับ MySQL และมี API (Application Programming Interface) ต่างๆมีให้เลือกใช้มากมายในการที่เข้าถึง MySQL โดยไม่ขึ้นอยู่ กับภาษาการพัฒนาใดภาษาหนึ่ง นอกเหนือจาก ตัวเชื่อมต่อกับภาษาอื่น (Connector) ที่ได้กล่าวมาแล้ว ยังมี API ที่ สนับสนุนในขณะนี้คือ * DBI สำหรับการเชื่อมต่อกับ ภาษา perl * Ruby สำหรับการเชื่อมต่อกับ ภาษา ruby * Python สำหรับการเชื่อมต่อกับภาษา python * .NET สำหรับการเชื่อมกับภาษา .NET framework * MySQL++ สำหรับเชื่อมต่อกับภาษา C++ * Ch สำหรับการเชื่อมต่อกับ Ch (C/C++ interpreter) ยังมีโปรแกรมอีกตัว เป็นโปรแกรมบริหารพัฒนาโดยผู้อื่น ซึ่งใช้กันอย่างแพร่หลายและ นิยมกันเขียนในภาษาพีเอชพี เป็นโปรแกรมเว็บแอปพลิเคชัน ชื่อ phpMyAdmin 9 9
MYSQL INSTALLATION ติดตั้ง MYSQL หา MySQL ได้จากไหน?? MySQL เป็น Software ที่สามารถใช้งานได้ฟรี โดยหาโหลดได้จากเว็บไซต์ http://www.mysql.com หรือสำหรับผู้ที่เขียน PHP อยู่แล้ว สามารถติดตั้งตัง Appserv ได้เลยครับ Install Appserv (PHP+Apache+MySQL) http://www.thaicreate.com/php/php-install-apache.html หรือหากผู้ที่พัฒนาโปรแกรมด้วยภาษา ASP หรือ ASP.NET แล้วใช้ IIS เป็น Web Server ถ้าหากติดตั้ง Appserv ผมแนะนำให้เปลี่ยน Port ของ Apache ใน Appserv เป็น 81 หรือ อย่างอื่นที่ไม่ใช่ 80 เพื่อป้องกันไม่ให้มีผลกระทบกับ IIS และ Apache Web Server หรือจะติดตั้งเฉพาะ MySQL โดยสามารถหาดาวน์โหลดได้จากเว็บไซต์ http://www.mysql.com 10 10
phpMyAdmin ทำความรู้จัก phpMyAdmin. phpMyAdmin คืออะไร phpMyAdmin ทำความรู้จัก phpMyAdmin??? phpMyAdmin คืออะไร ? phpMyAdmin เป็นโปรแกรมที่ถูกพัฒนาด้วย PHP ที่ใช้จัดการ MySQL ผ่าน Web Browser โดยสามารถจัดการ MySQL Database เกือบทุกอย่าง เช่นการ Create Database/Table/Field เพิ่ม/ลบ/แก้ไข ข้อมูลหรือโครงสร้างได้ phpMyAdmin หาได้จากไหน ? หากผู้ที่ติดตั้งโปรแกรม Appserv อยู่แล้วสามารถเรียกใช้ phpMyAdmin ได้ทันที http://localhost/phpMyAdmin phpMyAdmin มากับ Package ของ Appserv Appserv & phpMyAdmin http://www.thaicreate.com/php/php-install-apache.html หรือจะหาดาวน์โหลด phpMyAdmin ได้จากเว็บไซต์ Download phpMyAdmin http://www.phpmyadmin.net/ 11 11
หน้าจอของโปรแกรม phpMyAdmin ซึ่งทำงานบน Web Browser 12 12
หนาจอแสดง Database และ Table 13 13
หน้าจอแสดง ฟิวส์และจำนวนแถวของข้อมูล (Field,Record Column) 14 14
ฐานข้อมูล MYDATABASE Fields Type Description Fields Type Description Audit Customer Fields Type Description CustomerID varchar(4) รหัสลูกค้า(PK) Name varchar(50) ชื่อ Email อีเมล์ CountryCode varchar(2) รหัสประเทศ(FK) Budget double งบประมาณ Used รวมจำนวนเงินที่ใช้ Fields Type Description AuditID int(4) รหัส Audit(PK) CustomerID varchar(4) รหัสลูกค้า(FK) Date date วันที่ Used double จำนวนเงินที่ใช้ Country Fields Type Description CountryCode VARCHAR( 2 ) รหัสประเทศ(PK) CountryName VARCHAR(50) ชื่อประเทศ 15 15
MYSQL PHPMYADMIN CREATE DATABASE & TABLE เรียนรู้วิธีการสร้าง DATABASE และ TABLE ใน PHPMYADMIN เปิด PHPMYADMIN ด้วย HTTP://LOCALHOST/PHPMYADMIN 16 กรอก User/Password ในการเข้าสู่ phpMyAdmin ปกติจะ Default เป็น root/root 16
หน้าจอของโปรแกรม phpMyAdmin ซึ่งทำงานบน Web Browser การ Create Database ใส่ชื่อ Database Name และเลือก Create การ Create Table ใส่ชื่อ Table และจำนวนฟิวส์ที่ต้องการ เลือก Go 17 17
ระบุชื่อฟิวส์ 18 18
ทดสอบสร้าง TABLE ในที่นี่จะสร้าง TABLE ขึ้นมา 3 TABLE คือ CUSTOMER,COUNTRY,AUDIT ตามรูป TABLE CUSTOMER 19 19
Table country Table audit 20 20
ข้อมูลใน Table Rows Customer Rows Customer Rows country Rows audit 21
การ EXPORT DATABASE ทำเพื่อนำฐานข้อมูลที่มีอยู่ MySQL ที่สร้างเพื่อนำไปใช้ที่อื่นหรือ Backup เก็บ ไว้ เลือกที่ Export 22 22
เลือกรายการที่ต้องการเพื่อ EXPORT ตาราง เลือกตารางที่ต้องการ เลือกรูปแบบที่ต้องการ เลือกประเภทไฟล์ 23 23
เลือกส่งออกซึ่งไม่ต้องกำหนดค่าอย่างใดครับ ปกติค่า Default จะกำหนดให้อยู่แล้วครับ แล้วอย่าลืมเลือก Save as file ด้วยน่ะครับ เพราะเราจะส่งออกเป็น .sql เลือก Go 24 เลือก Save ไฟล์ mydatabase.sql ซึ่งเราจะนำไฟล์นี้ไปใช้งานหรือทำการสำรองเก็บไว้ 24
การ IMPORT DATABASE หลังจากที่เราได้ .sql มาแล้วขั้นต่อไปก็คือการ Import เข้าสู่ Database ที่ใหม่หรือที่เดิมครับ โดยใน Database ที่ใหม่จะต้องไม่มี Table ที่ได้ทำการ Export ออกตั้งแต่แรก เพราะเราจะทำการ Import เข้าไปใหม่ กรณีที่ต้องการสร้าง Database ใหม่ หรือหากมีอยู่แล้วก็ข้ามขั้นตอนไปได้เลยครับ 25 25
เลือกที่ Import 26 26
เลือกไฟล์ .sql ที่ได้ทำการ Export ไว้ครับ และเลือกที่ Go 27 27
Database ที่ได้ทำการ Import เข้ามา 28 Database ที่ได้ทำการ Import เข้ามา 28
MYSQL RELATION CASCADE ON DELETE/ON UPDATE MySQL Relation CasCade On Delete/On Update ความสามารถของ MySQL ในการทำ Relation ก็สามารถทำได้เช่นเดียวกัน โดยกำหนดชนิดของ Table เป็นแบบ InnoDB โดยสามารถทำการ CasCade DELETE หรือ UPDATE ได้ Syntax InnoDB CREATE TABLE `customer` ( . . . . ) ENGINE=InnoDB; 29 29
ดูตัวอย่าง ตัวอย่างได้ทำการสร้าง Table ชื่อ customer และ audit ซึ่งเมื่อมีการลบข้อมูลในตาราง customer ข้อมูลที่อยู่ใน audit จะถูกลบไปด้วย Table : customer CREATE TABLE `customer` ( `CustomerID` varchar(4) NOT NULL, `Name` varchar(50) NOT NULL, `Email` varchar(50) NOT NULL, `CountryCode` varchar(2) NOT NULL, `Budget` double NOT NULL, `Used` double NOT NULL, PRIMARY KEY (`CustomerID`) ) ENGINE=MyISAM; INSERT INTO `customer` VALUES ('C001', 'Win Weerachai', 'win.weerachai@thaicreate.com', 'TH', 1000000, 600000); INSERT INTO `customer` VALUES ('C002', 'John Smith', 'john.smith@thaicreate.com', 'EN', 2000000, 800000); INSERT INTO `customer` VALUES ('C003', 'Jame Born', 'jame.born@thaicreate.com', 'US', 3000000, 600000); INSERT INTO `customer` VALUES ('C004', 'Chalee Angel', 'chalee.angel@thaicreate.com', 'US', 4000000, 100000); INSERT INTO `customer` VALUES ('C005', 'Weerachai Nukitram', 'webmaster@thaicreate.com', 'TH', 2000000, 100000); 30 30
Table : audit CREATE TABLE `audit` ( `AuditID` int(4) NOT NULL, `CustomerID` varchar(4) NOT NULL, `Date` date NOT NULL, `Used` double NOT NULL, PRIMARY KEY (`AuditID`), FOREIGN KEY (CustomerID) REFERENCES customer (CustomerID) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB; INSERT INTO `audit` VALUES (1, 'C001', '2008-08-01', 100000); INSERT INTO `audit` VALUES (2, 'C001', '2008-08-05', 200000); INSERT INTO `audit` VALUES (3, 'C001', '2008-08-10', 300000); INSERT INTO `audit` VALUES (4, 'C002', '2008-08-02', 400000); INSERT INTO `audit` VALUES (5, 'C002', '2008-08-07', 100000); INSERT INTO `audit` VALUES (6, 'C002', '2008-08-15', 300000); INSERT INTO `audit` VALUES (7, 'C003', '2008-08-20', 400000); INSERT INTO `audit` VALUES (8, 'C003', '2008-08-25', 200000); INSERT INTO `audit` VALUES (9, 'C004', '2008-07-04', 100000); INSERT INTO `audit` VALUES (10, 'C005', '2008-07-04', 200000); 31 31
เพียงเท่านี้ก็จะได้ Relation 2 ตาราง เมื่อมีการแก้ไขหรือลบข้อมูลใน customer ข้อมูลใน audit จะมีผลในการแก้ไข หรือ ลบเช่นเดียวกัน 32 32
SQL สำหรับการสร้าง TABLE ชื่อ COUNTRY CREATE TABLE `country` ( `CountryCode` VARCHAR( 2 ) NOT NULL , `CountryName` VARCHAR( 50 ) NOT NULL , PRIMARY KEY ( `CountryCode` )) ENGINE = MYISAM ; INSERT INTO `country` VALUES ('TH', 'Thailand'); INSERT INTO `country` VALUES ('EN', 'England'); INSERT INTO `country` VALUES ('US', 'United State'); 33 33
MYSQL DATA SOURCE CONFIG (DSN) MySQL DSN Data Source ในภาษา Programming ส่วนใหญ่แล้วจะมี Driver สำหรับไว้ติดต่อกับ MySQL อยู่แล้วครับ แต่ในบางภาษาจะไม่สามารถเรียกใช้งานได้โดยตรง และวิธีที่ใช้กันส่วนมากก็คือการติดต่อผ่าน ODBC ในการเรียกใช้งาน Oracle ผ่าน ODBC จะต้องทำการ Set DSN Name ก่อนครับถึงจะสามารถทำการเรียก Database ใช้งานได้ ดาวโหลด MyODBC Driver ได้ที่ www.mysql.com ในที่นี้ใช้เวอร์ชั่น 5.1 เป็นเวอร์ชั่นล่าสุดหรือดาวน์โหลดจาก URL นี้ได้โดยตรง Download MyODBC 5.1 Driver http://www.thaicreate.com/upload/tutorial/mysql-connector-odbc-5.1.5-win32.zip ตัวอย่างการติดตั้ง MyODBC MyODBC http://www.thaicreate.com/asp/asp-mysql-connect-database.html เริ่มการ Config DSN ไปที่เมนู Start -> Setting -> Control Panel -> Administrative Tools 34 34
โปรแกรม ODBC เลือกที่ Tab System DSN -> Add วิธีการนี้จะต้องมีการลง MySQL ODBC 5.1 เสียก่อน 35 เลือกที่ Tab System DSN -> Add 35
เลือกที่ MySQL ODBC 5.1 Driver -> Finish 36 36
กำหนดชื่อ DSN ในที่นี้ผมกำหนดเป็น mydatabase และเลือกฐานข้อมูล mydatabase 37 37
ทดสอบ Connection คลิกที่ Test และโปรแกรมแสดงสถานะการติดต่อ 38 DSN ที่ได้จากการสร้าง 38
PHP MYSQL CONNECT TO DATABASE PHP MySQL Connect to Database สำหรับการเขียน PHP กับ MySQL นั้นถือเป็นปัจจัยหลักและได้รับความนิยมมากที่สุดในบรรดา Database ทั้งหลายครับ เพราะนอกจากฟรีทั้ง 2 ตัวแล้ว function ต่าง ๆ PHP ได้ออกแบบมาให้ใช้กับ MySQL Database โดยเฉพาะครับ จุดเด่นของ PHP และ MySQL คือ MySQL สามารถทงานได้อย่างรวดเร็ว และค่อนข้างจะเก็บข้อมูลได้หลาย Record mysql_error() Fatal error: Call to undefined function mysql_connect() in C:\AppServ\www\myphp\phpMySQLConnect.php on line 7 39 39
ถ้าเกิดข้อผิดพลาดตามที่ยกตัวอย่างให้ให้ทำการดาวน์โหลดตัว extension ชื่อ php_mysql.dll php_mysql.dll http://www.thaicreate.com/php/php_mysql.dll.html ไปไว้ในโฟเดอร์ extension ของ php เช่น C:\AppServ\php5\ext หรือสามารถ ตรวจสอบ Path ได้ที่ php.ini Start -> Run -> php.ini extension_dir = "C:/AppServ\php5\ext" . . . . . extension=php_mysql.dll และก็ Restart Apache หรือ Web Server ด้วยน่ะครับ เสร็จแล้วเป็นอันใช้ได้ Syntax $objConnect = mysql_connect($host,$user,$pass); $host = server,ip,computer-name $user = user $pass = password 40 40
ตัวอย่างการเขียนติดต่อ PHP กับ MySQL phpMySQLConnect.php <html> <head> <title>iamsanya.com</title> </head> <body> <? $objConnect = mysql_connect("localhost","root","root"); if($objConnect) { echo "Database Connected."; } else { echo "Database Connect Failed."; } mysql_close($objConnect); ?> </body> </html> 41 41
42 42
PHP MYSQL LIST TABLE PROPERTIES (แสดงชื่อฟิลด์) PHP MySQL List Table Properties ตัวอย่างนี้จะเป็นการเขียนโปรแกรม PHP กับ MySQL เพื่อแสดงคุณสมบัติของ Table ตัวอย่าง ListField.php <html> <head> <title>iamsanya.com</title> </head> <body> <? $objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); $objDB = mysql_select_db("mydatabase"); $strSQL = "SELECT * FROM customer"; $objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]"); $intNumField = mysql_num_fields($objQuery); $i = 0; echo "<b>Table customer have $intNumField Fields.</b><br>"; for($i=1;$i<$intNumField;$i++) { echo $i."=".mysql_field_name($objQuery,$i)." (".mysql_field_type($objQuery,$i).")<br>"; } mysql_close($objConnect); ?> </body> </html> 43 43
Output 44 44
PHP MYSQL LIST RECORD (แสดงตาราง) PHP MySQL List Record ตัวอย่างนี้จะเป็นการเขียนโปรแกรม PHP กับ MySQL เพื่อดึงข้อมูลจาก Table มาแสดง ตัวอย่าง ListRecord.php <html> <head> <title>iamsanya.com</title> </head> <body> <? $objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); $objDB = mysql_select_db("mydatabase"); $strSQL = "SELECT * FROM customer"; $objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]"); ?> <table width="600" border="1"> <tr> <th width="91"> <div align="center">CustomerID </div></th> <th width="98"> <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="59"> <div align="center">Budget </div></th> <th width="71"> <div align="center">Used </div></th> </tr> <? สามารเป็นเป็น Query อื่นๆได้ตามต้องการ เช่น SELECT * FROM table1 INNER JOIN table2 ON table1.id=table2.id; SELECT * FROM customer inner join country on customer.countrycode= country.countrycode 45 45
ListRecord.php ต่อ while($objResult = mysql_fetch_array($objQuery)) { ?> <tr> <td><div align="center"><?=$objResult["CustomerID"];?></div></td> <td><?=$objResult["Name"];?></td> <td><?=$objResult["Email"];?></td> <td><div align="center"><?=$objResult["CountryCode"];?></div></td> <td align="right"><?=$objResult["Budget"];?></td> <td align="right"><?=$objResult["Used"];?></td> </tr> <? } ?> </table> <? mysql_close($objConnect); ?> </body> </html> 46 46
Output 47 47
ถ้าเพิ่มเติมการโดยการทำ Link เพื่อเรียงตามตัวอักษรในคอลัมภ์ต่างๆ <html> <head> </head> <body> <? $objConnect = mysql_connect("localhost","root",“root") or die("Error Connect to Database"); $objDB = mysql_select_db("mydatabase"); IF($M=="") { $strSQL = "SELECT * FROM customer";} elseif($M==1) { $strSQL = "SELECT * FROM customer order by CustomerID Asc";} elseif($M==2) { $strSQL = "SELECT * FROM customer order by Name Asc";} elseif($M==3) { $strSQL = "SELECT * FROM customer order by Email Asc";} elseif($M==4) { $strSQL = "SELECT * FROM customer order by CountryCode Asc";} elseif($M==5) { $strSQL = "SELECT * FROM customer order by Budget Asc";} elseif($M==6) { $strSQL = "SELECT * FROM customer order by Used Asc";} $objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]"); ?> ListSort.php 48
ListSort.php ต่อ <table width="800" border="1"> <tr> <th width="91"> <div align="center"> <a href="ListSort.php?M=1">CustomerID </a> </div></th> <th width="100"> <div align="center"> <a href="ListSort.php?M=2">Name</a> </div></th> <th width="198"> <div align="center"> <a href="ListSort.php?M=3">Email </a> </div></th> <th width="97"> <div align="center"> <a href="ListSortphp?M=4">CountryCode</a> </div></th> <th width="59"> <div align="center"> <a href="ListSort.php?M=5">Budget </a> </div></th> <th width="71"> <div align="center"> <a href="ListSort.php?M=6">Used</a> </div></th> </tr> 49
ListSort.php ต่อ <? $i=0; while($objResult = mysql_fetch_array($objQuery)) { $i++; if ($i%2==0) echo "<tr bgcolor=#FFFF99>"; }else{ echo "<tr bgcolor=#FFCCCC>"; }?> <td><div align="center"><?=$objResult["CustomerID"];?></div></td> <td><?=$objResult["Name"];?></td> <td><?=$objResult["Email"];?></td> <td><div align="center"><?=$objResult["CountryCode"];?></div></td> <td align="right"><?=$objResult["Budget"];?></td> <td align="right"><?=$objResult["Used"];?></td> </tr> <? } ?> </table> <? mysql_close($objConnect); ?> </body> </html> 50
Output 51 51
PHP MYSQL RANDOM RECORD สุ่มรายการเพื่อแสดง ตัวอย่าง RandomRecord.php <html> <head> <title>iamsanya.com</title> </head> <body> <? $objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); $objDB = mysql_select_db("mydatabase"); $strSQL = "SELECT * FROM customer ORDER BY RAND() LIMIT 2 "; $objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]"); ?> <table width="600" border="1"> <tr> <th width="91"> <div align="center">CustomerID </div></th> <th width="98"> <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="59"> <div align="center">Budget </div></th> <th width="71"> <div align="center">Used </div></th> </tr> <? 52 52
RandomRecord.php ต่อ while($objResult = mysql_fetch_array($objQuery)) { ?> <tr> <td><div align="center"><?=$objResult["CustomerID"];?></div></td> <td><?=$objResult["Name"];?></td> <td><?=$objResult["Email"];?></td> <td><div align="center"><?=$objResult["CountryCode"];?></div></td> <td align="right"><?=$objResult["Budget"];?></td> <td align="right"><?=$objResult["Used"];?></td> </tr> <? } ?> </table> <? mysql_close($objConnect); ?> </body> </html> 53 53
Output 54 54
PHP MYSQL LIST RECORD PAGING แสดงรายการเป็นหน้า PHP MySQL List Record Paging ตัวอย่างนี้จะเป็นการเขียนโปรแกรม PHP กับ MySQL เพื่อดึงข้อมูลจาก Table มาแสดงและมีการแบ่งการแสดงผลเป็นหน้า ListRecordPaging.php <html> <head> <title>iamsanya.com</title> </head> <body> <? $objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); $objDB = mysql_select_db("mydatabase"); $strSQL = "SELECT * FROM customer "; $objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]"); $Num_Rows = mysql_num_rows($objQuery); $Per_Page = 2; // Per Page $Page = $_GET["Page"]; if(!$_GET["Page"]) { $Page=1; } 55 55
ListRecordPaging.php ต่อ $Prev_Page = $Page-1; $Next_Page = $Page+1; $Page_Start = (($Per_Page*$Page)-$Per_Page); if($Num_Rows<=$Per_Page) { $Num_Pages =1; } else if(($Num_Rows % $Per_Page)==0) { $Num_Pages =($Num_Rows/$Per_Page) ; } else { $Num_Pages =($Num_Rows/$Per_Page)+1; $Num_Pages = (int)$Num_Pages; } $strSQL .=" order by CustomerID ASC LIMIT $Page_Start , $Per_Page"; $objQuery = mysql_query($strSQL); ?> <table width="600" border="1"> <tr> <th width="91"> <div align="center">CustomerID </div></th> <th width="98"> <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="59"> <div align="center">Budget </div></th> <th width="71"> <div align="center">Used </div></th> </tr> <? ListRecordPaging.php ต่อ 56 56
while($objResult = mysql_fetch_array($objQuery)) { while($objResult = mysql_fetch_array($objQuery)) { ?> <tr> <td><div align="center"><?=$objResult["CustomerID"];?></div></td> <td><?=$objResult["Name"];?></td> <td><?=$objResult["Email"];?></td> <td><div align="center"><?=$objResult["CountryCode"];?></div></td> <td align="right"><?=$objResult["Budget"];?></td> <td align="right"><?=$objResult["Used"];?></td> </tr> <? } ?> </table> <br> Total <?= $Num_Rows;?> Record : <?=$Num_Pages;?> Page : <? if($Prev_Page) { echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page'><< Back</a> "; } 57 57
for($i=1; $i<=$Num_Pages; $i++){ if($i for($i=1; $i<=$Num_Pages; $i++){ if($i != $Page) { echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i'>$i</a> ]"; } else { echo "<b> $i </b>"; } } if($Page!=$Num_Pages) { echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page'>Next>></a> "; } mysql_close($objConnect); ?> </body> </html> 58 58
Output 59 59
SearchRecord.php PHP MYSQL SEARCH RECORD ค้นหารายการ PHP MySQL Search Record ตัวอย่างนี้จะเป็นการเขียนโปรแกรม PHP กับ MySQL เพื่อค้นหาข้อมูลจาก Table ตัวอย่าง SearchRecord.php <html> <head> <title>iamsanya.com</title> </head> <body> <form name="frmSearch" method="get" action="<?=$_SERVER['SCRIPT_NAME'];?>"> <table width="599" border="1"> <tr> <th>Keyword <input name="txtKeyword" type="text" id="txtKeyword" value="<?=$_GET["txtKeyword"];?>"> <input type="submit" value="Search"></th> </tr> </table> </form> <? 60 60
SearchRecord.php ต่อ if($_GET["txtKeyword"] != "") { $objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); $objDB = mysql_select_db("mydatabase"); // Search By Name or Email $strSQL = "SELECT * FROM customer WHERE (Name LIKE '%".$_GET["txtKeyword"]."%' or Email LIKE '%".$_GET["txtKeyword"]."%' )"; $objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]"); ?> <table width="600" border="1"> <tr> <th width="91"> <div align="center">CustomerID </div></th> <th width="98"> <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="59"> <div align="center">Budget </div></th> <th width="71"> <div align="center">Used </div></th> </tr> <? 61 61
SearchRecord.php ต่อ while($objResult = mysql_fetch_array($objQuery)) { ?> <tr> <td><div align="center"><?=$objResult["CustomerID"];?></div></td> <td><?=$objResult["Name"];?></td> <td><?=$objResult["Email"];?></td> <td><div align="center"><?=$objResult["CountryCode"];?></div></td> <td align="right"><?=$objResult["Budget"];?></td> <td align="right"><?=$objResult["Used"];?></td> </tr> <? } ?> </table> <? mysql_close($objConnect); } ?> </body> </html> 62 62
Output 63 63
PHP MYSQL SEARCH RECORD PAGING ค้นหาแสดงเป็นหน้า PHP MySQL Search Record Paging ตัวอย่างนี้จะเป็นการเขียนโปรแกรม PHP กับ MySQL เพื่อค้นหาข้อมูลจาก Table มาแสดงและมีการแบ่งการแสดงผลเป็นหน้า ตัวอย่าง SearchRecordPaging.php <html> <head> <title>iamsanya.com</title> </head> <body> <form name="frmSearch" method="get" action="<?=$_SERVER['SCRIPT_NAME'];?>"> <table width="599" border="1"> <tr> <th>Keyword <input name="txtKeyword" type="text" id="txtKeyword" value="<?=$_GET["txtKeyword"];?>"> <input type="submit" value="Search"></th> </tr> </table> </form> <? 64 64
SearchRecordPaging.php ต่อ if($_GET["txtKeyword"] != "") { $objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); $objDB = mysql_select_db("mydatabase"); // Search By Name or Email $strSQL = "SELECT * FROM customer WHERE (Name LIKE '%".$_GET["txtKeyword"]."%' or Email LIKE '%".$_GET["txtKeyword"]."%')"; $objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]"); $Num_Rows = mysql_num_rows($objQuery); $Per_Page = 2; // Per Page $Page = $_GET["Page"]; if(!$_GET["Page"]) { $Page=1; } $Prev_Page = $Page-1; $Next_Page = $Page+1; 65 65
SearchRecordPaging.php ต่อ $Page_Start = (($Per_Page*$Page)-$Per_Page); if($Num_Rows<=$Per_Page) { $Num_Pages =1; } else if(($Num_Rows % $Per_Page)==0) { $Num_Pages =($Num_Rows/$Per_Page) ; } else { $Num_Pages =($Num_Rows/$Per_Page)+1; $Num_Pages = (int)$Num_Pages; } $strSQL .=" order by CustomerID ASC LIMIT $Page_Start , $Per_Page"; $objQuery = mysql_query($strSQL); ?> <table width="600" border="1"> 66 66
SearchRecordPaging.php ต่อ <tr> <th width="91"> <div align="center">CustomerID </div></th> <th width="98"> <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="59"> <div align="center">Budget </div></th> <th width="71"> <div align="center">Used </div></th> </tr> <? while($objResult = mysql_fetch_array($objQuery)) { ?> <tr> <td><div align="center"><?=$objResult["CustomerID"];?></div></td> <td><?=$objResult["Name"];?></td> <td><?=$objResult["Email"];?></td> <td><div align="center"><?=$objResult["CountryCode"];?></div></td> <td align="right"><?=$objResult["Budget"];?></td> <td align="right"><?=$objResult["Used"];?></td> </tr> <? } ?> 67 67
SearchRecordPaging.php ต่อ </table> <br> Total <?= $Num_Rows;?> Record : <?=$Num_Pages;?> Page : <? if($Prev_Page) { echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page&txtKeyword=$_GET[txtKeyword]'><< Back</a> "; } for($i=1; $i<=$Num_Pages; $i++){ if($i != $Page) { echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i&txtKeyword=$_GET[txtKeyword]'>$i</a> ]"; } else { echo "<b> $i </b>"; } } if($Page!=$Num_Pages) { echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page&txtKeyword=$_GET[txtKeyword]'>Next>></a> "; } mysql_close($objConnect); } ?> </body> </html> 68 68
Output 69 69
PHP MYSQL ADD/INSERT RECORD การเพิ่มข้อมูล PHP MySQL Add/Insert Record ตัวอย่างนี้จะเป็นการเขียนโปรแกรม PHP กับ MySQL เพื่อเพิ่มข้อมูลลงใน Table ตัวอย่าง AddForm.php <html> <head> <title>iamsanya.com</title> </head> <body> <form action="AddSave.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> 70 70
AddForm.php ต่อ <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> 71 71
Output 72 72
AddSave.php <html> <head> <title>iamsanya.com</title> </head> <body> <? $objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); $objDB = mysql_select_db("mydatabase"); $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"]."') "; $objQuery = mysql_query($strSQL); if($objQuery) { echo "Save Done."; } else { echo "Error Save [".$strSQL."]"; } mysql_close($objConnect); ?> </body> </html> 73 73
Output 74 74
PHP MYSQL CHECK ALREADY EXIST ADD/INSERT RECORD การตรวจข้อมูลซ้ำก่อนเพิ่ม PHP MySQL Check Already Exist Add/Insert Record ตัวอย่างนี้จะเป็นการเขียนโปรแกรม PHP กับ MySQL ตรวจสอบข้อมูลก่อนเพิ่มข้อมูลลงใน Table ตัวอย่าง CheckExistRecordAddForm.php <html> <head> <title>iamsanya.com</title> </head> <body> <form action="CheckExistRecordAddSave.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> 75 75
CheckExistRecordAddForm.php ต่อ <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> 76 76
Output 77 77
CheckExistRecordAddSave.php <html> <head> <title>iamsanya.com</title> </head> <body> <? $objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); $objDB = mysql_select_db("mydatabase"); $strSQL = "SELECT * FROM customer WHERE CustomerID = '".$_POST["txtCustomerID"]."' "; $objQuery = mysql_query($strSQL); $objResult = mysql_fetch_array($objQuery); if($objResult) { echo "CustomerID already exist."; } else { 78 78
CheckExistRecordAddSave.php ต่อ $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"]."') "; $objQuery = mysql_query($strSQL); if($objQuery) { echo "Save Done."; } else { echo "Error Save [".$strSQL."]"; } } mysql_close($objConnect); ?> </body> </html> 79 79
Output 80 80
PHP MYSQL EDIT/UPDATE RECORD แก้ไขข้อมูล xxx แก้ไข EditRecordList.php PHP MySQL Edit/Update Record ตัวอย่างนี้จะเป็นการเขียน โปรแกรม PHP กับ MySQL เพื่อ แก้ไขข้อมูลลงใน Table Form แก้ไข EditRecordForm.php xxx xxx ดึงข้อมูลที่เลือกมาแก้ไข xxx บันทึกลงฐานข้อมูล EditRecordSave.php 81 81
ตัวอย่าง EditRecordList.php <html> <head> <title>iamsanya.com</title> </head> <body> <? $objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); $objDB = mysql_select_db("mydatabase"); $strSQL = "SELECT * FROM customer"; $objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]"); ?> <table width="600" border="1"> 82 82
EditRecordList.php ต่อ <tr> <th width="91"> <div align="center">CustomerID </div></th> <th width="98"> <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="59"> <div align="center">Budget </div></th> <th width="71"> <div align="center">Used </div></th> <th width="30"> <div align="center">Edit </div></th> </tr> <? while($objResult = mysql_fetch_array($objQuery)) { ?> <tr> <td><div align="center"><?=$objResult["CustomerID"];?></div></td> <td><?=$objResult["Name"];?></td> <td><?=$objResult["Email"];?></td> <td><div align="center"><?=$objResult["CountryCode"];?></div></td> <td align="right"><?=$objResult["Budget"];?></td> <td align="right"><?=$objResult["Used"];?></td> 83 83
EditRecordList.php ต่อ <td align="center"><a href="EditRecordForm.php?CusID=<?=$objResult["CustomerID"];?>">Edit</a></td> </tr> <? } ?> </table> <? mysql_close($objConnect); ?> </body> </html> 84 84
คลิกไปที่ไฟล์ EditRecordForm.php Output คลิกไปที่ไฟล์ EditRecordForm.php ตาม ID ที่ชี้อยู่ 85 85
EditRecordForm.php <html> <head> <title>iamsanya.com</title> </head> <body> <form action="EditRecordSave.php?CusID=<?=$_GET["CusID"];?>" name="frmEdit" method="post"> <? $objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); $strSQL = "SELECT * FROM customer WHERE CustomerID = '".$_GET["CusID"]."' "; $objDB = mysql_select_db("mydatabase"); $objQuery = mysql_query($strSQL); $objResult = mysql_fetch_array($objQuery); if(!$objResult) { echo "Not found CustomerID=".$_GET["CusID"]; } else { ?> <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> 86 86
EditRecordForm.php ต่อ <th width="70"> <div align="center">Used </div></th> </tr> <tr> <td><div align="center"><input type="text" name="txtCustomerID" size="5" value="<?=$objResult["CustomerID"];?>"></div></td> <td><input type="text" name="txtName" size="20" value="<?=$objResult["Name"];?>"></td> <td><input type="text" name="txtEmail" size="20" value="<?=$objResult["Email"];?>"></td> <td><div align="center"><input type="text" name="txtCountryCode" size="2" value="<?=$objResult["CountryCode"];?>"></div></td> <td align="right"><input type="text" name="txtBudget" size="5" value="<?=$objResult["Budget"];?>"></td> <td align="right"><input type="text" name="txtUsed" size="5" value="<?=$objResult["Used"];?>"></td> </tr> </table> <input type="submit" name="submit" value="submit"> <? } mysql_close($objConnect); ?> </form> </body> </html> 87 87
OUTPUT 88 88
EditRecordSave.php <html> <head> <title>iamsanya.com</title> </head> <body> <? $objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); $objDB = mysql_select_db("mydatabase"); $strSQL = "UPDATE customer SET "; $strSQL .="CustomerID = '".$_POST["txtCustomerID"]."' "; $strSQL .=",Name = '".$_POST["txtName"]."' "; $strSQL .=",Email = '".$_POST["txtEmail"]."' "; $strSQL .=",CountryCode = '".$_POST["txtCountryCode"]."' "; $strSQL .=",Budget = '".$_POST["txtBudget"]."' "; $strSQL .=",Used = '".$_POST["txtUsed"]."' "; $strSQL .="WHERE CustomerID = '".$_GET["CusID"]."' "; $objQuery = mysql_query($strSQL); if($objQuery) { echo "Save Done."; } else { echo "Error Save [".$strSQL."]"; } mysql_close($objConnect); ?> </body> </html> 89 89
PHP MYSQL DELETE RECORD การลบข้อมูล PHP MySQL Delete Record ตัวอย่างนี้จะเป็นการเขียนโปรแกรม PHP กับ MySQL เพื่อลบข้อมูลใน Table DeleteRecordList.php <html> <head> <title>iamsanya.com</title> </head> <body> <? $objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); $objDB = mysql_select_db("mydatabase"); $strSQL = "SELECT * FROM customer"; $objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]"); ?> <table width="600" border="1"> <tr> <th width="91"> <div align="center">CustomerID </div></th> <th width="98"> <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="59"> <div align="center">Budget </div></th> <th width="71"> <div align="center">Used </div></th> <th width="30"> <div align="center">Delete </div></th> </tr> 90 90
DeleteRecordList.php ต่อ <? while($objResult = mysql_fetch_array($objQuery)) { ?> <tr> <td><div align="center"><?=$objResult["CustomerID"];?></div></td> <td><?=$objResult["Name"];?></td> <td><?=$objResult["Email"];?></td> <td><div align="center"><?=$objResult["CountryCode"];?></div></td> <td align="right"><?=$objResult["Budget"];?></td> <td align="right"><?=$objResult["Used"];?></td> <td align="center"> <a href="DeleteRecord.php?CusID=<?=$objResult["CustomerID"];?>"> Delete</a> </td> </tr> <? } ?> </table> <? mysql_close($objConnect); ?> </body> </html> 91 91
คลิกไปที่ไฟล์ DeleteRecord.php ตาม ID ที่ชี้อยู่ OUTPUT 92 คลิกไปที่ไฟล์ DeleteRecord.php ตาม ID ที่ชี้อยู่ 92
DeleteRecord.php <html> <head> <title>iamsanya.com</title> </head> <body> <? $objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database"); $objDB = mysql_select_db("mydatabase"); $strSQL = "DELETE FROM customer "; $strSQL .="WHERE CustomerID = '".$_GET["CusID"]."' "; $objQuery = mysql_query($strSQL); if($objQuery) { echo "Record Deleted."; } else { echo "Error Delete [".$strSQL."]"; } mysql_close($objConnect); ?> </body> </html> 93 93
ในการใช้งาน Transaction จะต้องกำหนดชนิดของ Table เป็นแบบ InnoDB 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") InnoDB Syntax CREATE TABLE `customer` ( . . . . ) ENGINE=InnoDB; ในการใช้งาน Transaction จะต้องกำหนดชนิดของ Table เป็นแบบ InnoDB 94 94
กรณีมีข้อผิดพลาด MYSQL SAID: DOCUMENTATION #1289 - The 'InnoDB' feature is disabled; you need MySQL built with 'InnoDB' to have it working ให้ทำการเปิดไฟล์ my.ini (C:\AppServ\MySQL\my.ini) skip-innodb แก้เป็น #skip-innodb ### Restart MySQL Service ### 95 95
ตัวอย่าง ตัวอย่างนี้จะเป็นการเพิ่มข้อมูล ได้สมมุติการเพิ่มข้อมูลซ้ำ ซึ่งมี Primary Key ชื่อ CustomerID ซึ่งจะสามารถเพิ่มข้อมูลสำเร็จใน Statement แรก และ Statement ที่ 2 จะไม่สามารถเพิ่มข้อมูลได้ และเมื่อมีการ RollBack ข้อมูล Statement แรกที่ถูก Insert ไปแล้วก็จะถูกยกเลิกในทันที สำหรับการใช้ Transaction สามารถใช้ได้ทั้งการ Insert/Update/Delete Record 96 96
TransactionAddForm.php <html> <head> <title>iamsanya.com</title> </head> <body> <form action="TransactionAddSave.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> 97 97
OUTPUT 98 98
TransactionAddSave.php <html> <head> <title>iamsanya.com</title> </head> <body> <? $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); 99 99
TransactionAddSave.php ต่อ $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> Error Message Error Save [INSERT INTO customer (CustomerID,Name,Email,CountryCode,Budget,Used) VALUES ('C005','Weerachai Nukitram','webmaster@thaicreate.com' ,'TH','2000000','100000') ] 100 100