Book sru
- 3. (1)
คำนำ
ในปัจจุบันเทคโนโลยีสารสนเทศมีบทบาทในชีวิตประจาวันของเรามากขึ้นการที่จะสร้างระบบงานที่ใช้
ในองค์กรในลักษณะของการเขียนโปรแกรมบนเว็บ (Web Programming) เพื่อจัดเก็บข้อมูล และสืบค้นข้อมูล
ในระบบฐานข้อมูล การที่จะพัฒนาได้นั้น จาเป็นต้องมีผู้ชานาญในการพัฒนาระบบจึงจะทาให้ระบบนั้นมี
ประสิทธิภาพในการใช้งาน ดังนั้นเป้าหมายสาคัญของเอกสารตารา/หนังสือ เล่มนี้จึงต้องการเสริมสร้างทักษะ
ความรู้ให้กับนักศึกษาหรือผู้ที่สนใจ การเขียนโปรแกรมบนเว็บตั้งแต่เริ่มต้น จนถึงประยุกต์ใช้ในระดับมืออาชีพ
ต่อไป
การเขียนโปรแกรมบนเว็บนั้น มีภาษาที่ใช้สาหรับการพัฒนามีอยู่ด้วยกันหลายภาษา เช่น ASP, Perl,
JSP และ PHP เป็นต้น แต่ภาษาที่ได้รับความนิยมอย่างแพร่หลาย โดยสังเกตได้จากเว็บไซต์ส่วนใหญ่ เช่น
facebook.com และเว็บไซต์หน่วยงานภาครัฐและเอกชน ภาษา PHP นั้น เป็นภาษาสคริปต์ที่ทางานในฝั่ง
ของเครื่องแม่ข่าย (Server Side) เพื่อประมวลผลแล้วส่งกลับมายังเครื่องที่ร้องขอในลักษณะของภาษา HTML
ลักษณะสาคัญของภาษา PHP จะมีโครงสร้างที่ง่ายแก่การทาความเข้าใจ คล้ายกับภาษาซี (C Language) ซึ่ง
เหมาะกับ ผู้ เริ่ มต้ น พัฒ นา และยั งสามารถเขี ย นในลั กษณะของออบเจ็ค (OOP: Object Oriented
Programming) ได้อีกด้วย เหมาะสาหรับการย่อโค๊ดภาษาให้สั้นลง ฐานข้อมูลก็เป็นส่วนหนึ่งที่มีความสาคัญ
สาหรับการเขียนโปรแกรมบนเว็บด้วยภาษา PHP นั้น ตัวภาษา PHP เองสามารถติดต่อกับฐานข้อมูลหลาย
ชนิด เช่น Oracle, Progress, MS-Access และ MySQL เป็นต้น ใน หนังสือเล่มนี้จะใช้ฐานข้อมูล MySQL
สาหรับเรียนรู้และฝึกปฏิบัติ
หนั ง สื อ เล่ ม นี้ เ ขี ย นขึ้ น เพื่ อ ถ่ า ยทอดความรู้ แ ละประสบการณ์ ข องผู้ เ ขี ย น (จากประสบการณ์ สู่
ภาคปฏิบัติ) ประสบการณ์ของผู้เขียนนั้นได้มาจากงานสอน และพัฒนาเว็บ ด้วยภาษา PHP และ MySQL มา
โดยตลอด เป็นเวลานานไม่น้อยกว่า 10 ปี กลั่นจากใจสู่ผู้ที่สนใจ รวมถึง นิสิต นักศึกษา ที่มีความสนใจด้าน
การเขียนโปรแกรมหรือพัฒนาเว็บ นาไปศึกษาเรียนรู้ นาไปประยุกต์ใช้งานที่หลากหลายตามลักษณะงานที่
แตกต่าง ดังนั้นผู้เขียนจึงหวังว่า หลังการศึกษาเนื้อหาจากหนังสือเล่มนี้ทั้งหมดแล้ว ผู้อ่านจะสามารถนาความรู้
ไปใช้การโปรแกรมบนเว็บเพื่อใช้งานจริงต่อไป
ปริญญา น้อยดอนไพร
parinya-2008@hotmail.com
- 5. (3)
สำรบัญ
หน้ำที่
คำนำ .................................................................................................................................................... (1)
สำรบัญ ................................................................................................................................................. (3)
สำรบัญตำรำง ....................................................................................................................................... (9)
สำรบัญภำพ ........................................................................................................................................(11)
บทที่ 1 บทนำ .................................................................................................................................. 1
PHP คือ อะไร ............................................................................................................................. 1
PHP สามารถทาอะไรได้บ้าง ....................................................................................................... 1
ประวัติความเป็นมาของ PHP (History of PHP) ....................................................................... 2
PHP เวอร์ชัน 4 ........................................................................................................................... 3
PHP เวอร์ชัน 5 ........................................................................................................................... 4
PHP เวอร์ชัน 6 ........................................................................................................................... 5
MySQL คืออะไร ......................................................................................................................... 6
บทที่ 2 หลักกำรทำงำนของ PHP .................................................................................................. 11
AppServ คืออะไร .....................................................................................................................13
วิธีการติดตั้งโปรแกรม AppServ ...............................................................................................15
XAMPP คืออะไร ....................................................................................................................... 21
วิธีการติดตั้ง XAMPP บนระบบปฏิบัติ Windows ....................................................................22
การเลือกใช้เครื่องมือสาหรับการเขียนโค้ด (Choosing a Code Editor) ................................. 27
บทที่ 3 PHP เบื้องต้น .................................................................................................................... 31
การแทรกคาสั่งภาษา PHP ในเอกสาร HTML .......................................................................... 31
องค์ประกอบพื้นฐานของการเขียน PHP ................................................................................... 32
การแสดงผลข้อมูลผ่านเว็บบราวเซอร์ (Outputting Data to the Browser) ......................... 33
ชนิดข้อมูลที่รองรับใน PHP (PHP's Supported Datatypes) ................................................ 37
การแปลงชนิดข้อมูลโดยใช้ตัวแปร .......................................................................................... 40
การปรับเปลี่ยนชนิดข้อมูลแบบอัตโนมัติ (Adapting Datatypes with Type Juggling) ....... 41
ฟังก์ชันที่เกี่ยวข้องกับชนิดข้อมูล (Type-Related Function) ................................................ 41
ฟังก์ชันตรวจสอบชนิดของข้อมูล (Type Identifier Functions) ............................................ 43
คาสงวนของ PHP (Reserved Words) .................................................................................... 43
บทที่ 4 ตัวแปร ตัวดำเนินกำรและนิพจน์ (Variables, Operators and Expressions) .............. 45
- 6. (4)
สำรบัญ (ต่อ)
หน้ำที่
ตัวแปร (Variable) .................................................................................................................... 45
ขอบเขตของตัวแปร (Variable Scope) .................................................................................. 47
ตัวแปรพิเศษ (Super global Variables) ................................................................................ 41
ตัวแปรค่าคงที่ (Constants) ..................................................................................................... 53
ตัวแปรที่มีค่า Null .................................................................................................................... 54
การตรวจสอบและยกเลิกตัวแปร ............................................................................................... 55
ตัวดาเนินการ (Operators) และนิพจน์ (Expressions) ........................................................... 56
ตัวดาเนินการในการเชื่อมข้อความ (String) .............................................................................. 62
ตัวดาเนินการอื่น ๆ ....................................................................................................................66
บทที่ 5 โครงสร้ำงควบคุม (Control Structures) ....................................................................... 67
คาสั่งเงื่อนไข (Conditional Statements) .............................................................................. 67
คาสั่งทาซ้า (Looping Statements) ........................................................................................72
คาสั่งควบคุมอื่นๆ ที่เกี่ยวข้องกับคาสั่งทาซ้า (The Other Controls of Looping
Statements) ........................................................................................................................... 78
บทที่ 6 ฟังก์ชัน (Functions) ....................................................................................................... 81
ฟังก์ชัน ...................................................................................................................................... 81
การเรียกใช้งานฟังก์ชันมาตรฐานของ PHP ............................................................................... 82
การสร้างฟังก์ชัน (Creating a Function) ................................................................................ 82
การเรียกใช้ฟังก์ชันที่สร้างเอง .................................................................................................... 83
ฟังก์ชันแบบมีการส่งค่าพารามิเตอร์ .......................................................................................... 83
การส่งค่ากลับจากฟังก์ชันด้วยคาสั่ง return (Returning Values from a Function) ............86
ฟังก์ชันแบบเรียกตัวเอง (Recursive Functions) .................................................................... 87
ฟังก์ชันไลบรารี (Function Libraries) ..................................................................................... 88
บทที่ 7 อำร์เรย์ (Arrays) .............................................................................................................. 91
การสร้างอาร์เรย์ (Create arrays) ............................................................................................ 91
การเข้าถึงข้อมูลภายในอาร์เรย์ ................................................................................................. 95
ฟังก์ชันอื่นๆ ที่เกี่ยวกับอาร์เรย์ ................................................................................................. 98
ฟังก์ชันในการเพิ่มสมาชิกในอาร์เรย์ ......................................................................................... 98
ฟังก์ชันในการลบสมาชิกในอาร์เรย์ ......................................................................................... 101
- 7. (5)
สำรบัญ (ต่อ)
หน้ำที่
ฟังก์ชันในการนับจานวนสมาชิกในอาร์เรย์ ............................................................................. 102
ฟังก์ชันในการเรียงลาดับข้อมูลในอาร์เรย์ที่มีอินเด็กซ์เป็นตัวเลข ............................................ 104
ฟังก์ชันที่ใช้ในการเรียงลาดับข้อมูลในอาร์เรย์ที่มีอินเด็กซ์เป็นตัวอักษรหรือข้อความ ............. 105
ฟังก์ชันที่ใช้สาหรับการจัดการพอยเตอร์ (Pointer) ในอาร์เรย์ ............................................... 108
ฟังก์ชันสาหรับการรวมอาร์เรย์ ................................................................................................108
ฟังก์ชันสาหรับการสลับค่าระหว่างอินเด็กซ์หรือคีย์กับค่าข้อมูลในอาร์เรย์ ..............................110
ฟังก์ชันสาหรับการค้นหาอินเด็กซ์หรือคีย์และค่าข้อมูลในอาร์เรย์ .......................................... 110
ฟังก์ชันสาหรับการหาค่าข้อมูลสมาชิกที่เหมือนและแตกต่างกันในอาร์เรย์ ............................ 111
การใช้ข้อมูลจากอาร์เรย์ $_SERVER ...................................................................................... 112
การใช้ข้อมูลจากอาร์เรย์ $_FILE ............................................................................................ 114
บทที่ 8 สตริง ตัวเลข และเวลำ ................................................................................................... 117
ฟังก์ชันเกี่ยวกับสตริง .............................................................................................................. 117
ฟังก์ชันเกี่ยวกับรหัสแอสกี (ASCII) ......................................................................................... 117
ฟังก์ชันเกี่ยวกับการหาขนาดของสตริง ................................................................................... 118
ฟังก์ชันในการเปลี่ยนรูปแบบของตัวพิมพ์ ............................................................................... 119
ฟังก์ชันเกี่ยวกับการแยก และรวมข้อความหรือสตริง ............................................................. 121
ฟังก์ชันเกี่ยวกับข้อความหรือสตริงย่อย .................................................................................. 122
ฟังก์ชันในการค้นหาข้อความหรือสตริง .................................................................................. 124
ฟังก์ชันในการแทนที่ข้อความหรือสตริง ................................................................................. 125
ฟังก์ชันในการตัดช่องว่างและเติมข้อความหรือสตริง .............................................................. 127
ฟังก์ชันเกี่ยวกับอักขระพิเศษของ HTML ................................................................................ 129
ฟังก์ชันเกี่ยวกับจานวนและตัวเลข .......................................................................................... 130
ฟังก์ชันเกี่ยวกับวันเวลา (Date and Time) ............................................................................132
การจัดการกับวันที่และเวลาแบบ Greenwich Mean Time (GMT) ..................................... 139
บทที่ 9 กำรจัดกำรไฟล์และไดเรกทอรี ......................................................................................... 145
การอ้างถึง Document Root .................................................................................................145
การอ้างอิงพาธแบบ Absolute ............................................................................................... 145
การอ้างอิงพาธแบบ Relative ................................................................................................. 146
การจัดการกับไฟล์ ................................................................................................................... 147
- 8. (6)
สำรบัญ (ต่อ)
บทที่ 10
บทที่ 11
บทที่ 12
บทที่ 13
หน้ำที่
การจัดการกับไดเรกทอรี ......................................................................................................... 159
การอัพโหลดไฟล์ ..................................................................................................................... 164
ฟังก์ชันการหาขนาด และชนิดของไฟล์ .................................................................................. 167
กำรจัดกำรข้อมูลจำกฟอร์ม ............................................................................................. 169
ลักษณะของฟอร์ม ...................................................................................................................169
คานิยามและการใช้งานแท็ก form ..........................................................................................170
การจัดการข้อมูลจากฟอร์มในฝั่งเซิร์ฟเวอร์ .............................................................................179
การส่งข้อมูลแบบอาร์เรย์ .........................................................................................................183
คุกกี้ เซสชั่น และกำรเชื่อมโยงระหว่ำงเพจ ..................................................................... 185
เฮดเดอร์ (Header) ................................................................................................................. 185
การส่งข้อมูลระหว่างเพจแบบ Query String ......................................................................... 186
การจัดเก็บข้อมูลแบบคุกกี้ ...................................................................................................... 187
การจัดเก็บข้อมูลแบบเซสชัน ...................................................................................................189
กำรเขียนโปรแกรมแบบ OOP .........................................................................................197
คลาส (Class) ..........................................................................................................................197
การนาคลาสมาใช้ในสคริปต์ PHP ........................................................................................... 198
ออบเจ็กต์ และอินสแตนซ์ ....................................................................................................... 198
เมธอด (Method) ................................................................................................................... 199
โมดิฟายเออร์ (Modifier) แบบ public และ private ............................................................ 201
ค่าคงที่ (Constant) .................................................................................................................204
คอนสตรักเตอร์ (Constructor) .............................................................................................. 205
โมดิฟายเออร์ Static ............................................................................................................... 206
การสืบทอด (Inheritance) ..................................................................................................... 208
กำรใช้เทคนิค AJAX ร่วมกับ PHP .................................................................................. 211
AJAX (Asynchronous JavaScript and XML) ....................................................................211
ประวัติความเป็นมา ................................................................................................................. 212
ที่มาของปัญหา ........................................................................................................................ 212
โครงสร้างของ AJAX ............................................................................................................... 213
การทางานของ AJAX ..............................................................................................................214
- 9. (7)
สำรบัญ (ต่อ)
หน้ำที่
การใช้ AJAX Framework ..................................................................................................... 215
ฟังก์ชันที่ใช้จัดการข้อมูล ......................................................................................................... 218
แนวทางการพัฒนา AJAX Application ................................................................................219
ปัญหาภาษาไทยใน AJAX ....................................................................................................... 220
การส่งผลลัพธ์กลับมาเป็น JavaScript ....................................................................................220
การอัปเดทอินพุต Select ด้วยเทคนิค AJAX ......................................................................... 224
อีเวนต์ (Event) ....................................................................................................................... 228
การกาหนดอีเวนต์ ................................................................................................................... 230
ออบเจ็กต์อีเวนต์ (Object Event) .......................................................................................... 231
อีเวนต์เกี่ยวกับเมาส์ ................................................................................................................ 232
อีเวนต์เกี่ยวกับคีย์บอร์ด .......................................................................................................... 233
บทที่ 14 ฐำนข้อมูล MySQL และกำรใช้งำน phpMyAdmin ...................................................... 241
คาสั่งพื้นฐานของ MySQL .......................................................................................................241
ลักษณะองค์ประกอบของฐานข้อมูล ....................................................................................... 243
ชนิดข้อมูลของคอลัมน์ ............................................................................................................ 244
แอททริบิวต์ของคอลัมน์ .......................................................................................................... 246
การสร้างฐานข้อมูล ................................................................................................................. 247
การสร้างตารางฐานข้อมูล ....................................................................................................... 247
การแทรก ปรับปรุง ลบ และเรียกดูข้อมูลในตาราง .................................................................251
จัดการฐานข้อมูลด้วย phpMyAdmin ....................................................................................256
การเริ่มต้นใช้งาน phpMyAdmin ...........................................................................................256
การลบฐานข้อมูล และตาราง .................................................................................................. 263
ส่วนของการใช้คาสั่ง SQL ....................................................................................................... 263
ส่วนของการค้นหา .................................................................................................................. 264
ส่วนของการกาหนดสิทธิ์ ......................................................................................................... 264
บทที่ 15 กำรใช้ PHP ร่วมกับ MySQL ..........................................................................................265
การใช้ PHP ร่วมกับ MySQL................................................................................................... 265
ฟังก์ชันสาหรับเชื่อมต่อ/ยกเลิกการเชื่อมต่อระหว่าง PHP และ MySQL ................................265
ฟังก์ชันสาหรับการเลือกฐานข้อมูล ..........................................................................................267
- 10. (8)
สำรบัญ (ต่อ)
หน้ำที่
การส่งคาสั่ง SQL ไปยังฐานข้อมูล ...........................................................................................268
การอ่านข้อมูลผลลัพธ์ ............................................................................................................. 269
การแก้ไขข้อมูลภาษาไทยกลายเป็น "?????...." ........................................................................272
การตรวจสอบการเปลี่ยนแปลงข้อมูล ......................................................................................272
การตรวจสอบข้อผิดพลาดระหว่างการทางานร่วมกับ MySQL .............................................. 275
การตรวจสอบชื่อฐานข้อมูลและตาราง ................................................................................... 275
การตรวจสอบโครงสร้างของขอบเขตข้อมูล ............................................................................ 277
บทที่ 16 กรณีศึกษำ: ระบบจัดกำรสมำชิก ..................................................................................... 281
โปรเซสการทางานของระบบจัดการสมาชิก ............................................................................ 281
อธิบายการทางานของระบบ ................................................................................................... 281
สร้างฐานข้อมูลและตาราง ...................................................................................................... 282
รายละเอียดของไฟล์ที่เกี่ยวข้อง .............................................................................................. 282
บรรณำนุกรม ...................................................................................................................................... 305
- 11. (9)
สำรบัญตำรำง
ตำรำงที่
3.1
3.2
3.3
4.1
4.2
4.3
4.4
4.5
4.6
4.7
7.1
7.2
7.3
7.4
7.5
8.1
8.2
8.3
8.4
8.5
8.6
8.7
9.1
9.2
9.3
9.4
9.5
10.1
10.2
หน้ำที่
แสดงตัวกาหนดชนิดการแสดงผลที่ใช้ร่วมกับคาสั่ง printf ( ) ...................................................35
ตัวดาเนินการแปลงชนิดของข้อมูล (Type Casting Operators) ............................................. 40
คาสงวนของ PHP ......................................................................................................................44
ตัวดาเนินการพื้นฐานสาหรับการคานวณ .................................................................................. 57
ตัวดาเนินการสาหรับการกาหนดค่า .......................................................................................... 58
ตัวดาเนินการสาหรับเพิ่ม และลดค่า ......................................................................................... 59
ตัวดาเนินการสาหรับการเปรียบเทียบ ....................................................................................... 60
ตัวดาเนินการสาหรับการเปรียบเทียบทางตรรกะ ......................................................................60
ลาดับความสาคัญของตัวดาเนินการ .......................................................................................... 62
Escape Sequence ..................................................................................................................63
แสดงตัวอย่างข้อมูลแบบอาร์เรย์ และแสดงตาแหน่งของอินเด็กซ์ ............................................ 91
แสดงผลสรุปฟังก์ชันที่ใช้สาหรับเรียงลาดับข้อมูลในอาร์เรย์ที่มีอินเด็กซ์เป็นตัวอักษร ............ 107
สรุปฟังก์ชันที่ใช้สาหรับการจัดการพอยเตอร์ในอาร์เรย์ .......................................................... 108
แสดงค่าอินเด็กซ์หรือคีย์ของอาร์เรย์ $_SERVER .................................................................... 113
แสดงค่าอินเด็กซ์หรือคีย์ของอาร์เรย์ $_FILE .......................................................................... 114
ฟังก์ชันเกี่ยวกับรหัสแอสกี .......................................................................................................117
ฟังก์ชันในการตัดช่องว่าง .........................................................................................................128
ฟังก์ชันเกี่ยวกับการประมาณค่า ..............................................................................................130
ฟังก์ชันในการเปรียบเทียบจานวน .......................................................................................... 131
ฟังก์ชันการตรวจสอบ และจัดรูปแบบตัวเลข .......................................................................... 131
ฟังก์ชันเพิ่มเติมอื่นๆ ................................................................................................................ 132
อาร์เรย์แบบ Key/Value ที่ได้จากการใช้ฟังก์ชัน getdate ( ) ............................................... 137
ขั้นตอนการเขียนและอ่านข้อมูลในไฟล์ ...................................................................................147
ไฟล์โหมด ................................................................................................................................ 147
ฟังก์ชันที่ใช้ตรวจสอบเกี่ยวกับไฟล์ .......................................................................................... 158
ฟังก์ชันที่ใช้ตรวจสอบเวลาที่เกี่ยวข้องกับไฟล์ ......................................................................... 158
ค่าคีย์ของตัวแปร $_FILES ......................................................................................................165
ตัวรับข้อมูลที่สาคัญของฟอร์ม .................................................................................................169
แสดงแอตทริบิวต์เฉพาะแท็ก form ........................................................................................ 170
- 12. (10)
สำรบัญตำรำง (ต่อ)
ตำรำงที่
10.3
10.4
10.5
10.6
10.7
10.8
10.9
10.10
13.1
13.2
13.3
14.1
14.2
14.3
14.4
14.5
14.6
14.7
14.8
16.1
16.2
หน้ำที่
แสดงแอตทริบิวต์เฉพาะแท็ก input ....................................................................................... 172
แสดงแอตทริบิวต์เฉพาะแท็ก textarea .................................................................................. 174
แสดงแอตทริบิวต์เฉพาะแท็ก label ........................................................................................175
แสดงแอตทริบิวต์เฉพาะแท็ก legend .................................................................................... 175
แสดงแอตทริบิวต์เฉพาะแท็ก select ...................................................................................... 176
แสดงแอตทริบิวต์เฉพาะแท็ก OPTGROUP ............................................................................ 177
แสดงแอตทริบิวต์เฉพาะแท็ก OPTION ...................................................................................178
แสดงแอตทริบิวต์เฉพาะแท็ก button .................................................................................... 178
แสดงอีเวนต์ของ JavaScript สาหรับกาหนดให้กับอิลิเมนต์ .................................................. 229
แสดงอีเวนต์ของ JavaScript แบบพร็อปเพอร์ตี้ .................................................................... 231
แสดงตัวอย่างรหัสที่ใช้แทนปุ่มคีย์บอร์ด ..................................................................................234
แสดงชนิดข้อมูลของ MySQL ชนิดตัวเลข .............................................................................. 244
แสดงชนิดข้อมูลของ MySQL ชนิดสตริง ................................................................................ 245
แสดงชนิดข้อมูลของ MySQL ชนิด BLOB ............................................................................. 245
แสดงชนิดข้อมูลของ MySQL ชนิด SET และ ENUM ............................................................ 245
แสดงชนิดข้อมูลของ MySQL ชนิดวันเวลา ............................................................................ 246
แสดงแอททริบิวต์ของคอลัมน์ใน MySQL ............................................................................... 246
แสดงโอเปอร์เรเตอร์ที่ใช้งานร่วมกับคาสั่ง WHERE ................................................................ 254
แสดงฟังก์ชัน Aggregate สาหรับใช้ร่วมกับ GROUP BY ....................................................... 255
ตารางข้อมูล tblcatmember ................................................................................................ 282
ตารางข้อมูล tblmember ...................................................................................................... 282
- 13. (11)
สำรบัญภำพ
ภำพที่
1.1
1.2
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10
2.11
2.12
2.13
2.14
2.15
2.16
2.17
2.18
2.19
2.20
2.21
2.22
2.23
2.24
2.25
2.26
หน้ำที่
ผู้ร่วมพัฒนา PHP ........................................................................................................................ 2
ผู้ร่วมพัฒนา MySQL ...................................................................................................................6
รูปแบบการติดต่อสื่อสารระหว่างเว็บบราวเซอร์และเว็บเซิร์ฟเวอร์ผ่านโปรโตคอล HTTP ........12
รูปแบบการติดต่อสื่อสารระหว่างเว็บบราวเซอร์และเว็บเซิร์ฟเวอร์เพื่อเรียกเว็บเพจธรรมดา ... 12
การร้องขอการใช้งานจากไคลเอ็นท์ ไปยังเครื่องที่ให้บริการเป็น Web Server engine
ของ PHP ................................................................................................................................... 13
ภาณุพงศ์ ปัญญาดี ผู้พัฒนา AppServ ......................................................................................13
ขั้นตอนการติดตั้งโปรแกรม AppServ .......................................................................................16
แสดงรายละเอียดเงื่อนไขการ GNU License ........................................................................... 16
เลือกปลายทางการติดตั้งโปรแกรม AppServ ........................................................................... 17
เลือก Package Components ที่ต้องการติดตั้ง .......................................................................17
แสดงการกาหนดค่าคอนฟิกค่า Apache เว็บเซิร์ฟเวอร์ ........................................................... 18
แสดงการกาหนดค่าคอนฟิกของ MySQL Database ............................................................... 19
แสดงการดาเนินการติดตั้งโปรแกรม AppServ ......................................................................... 19
แสดงหน้าจอขั้นตอนสิ้นสุดการติดตั้งโปรแกรม AppServ ........................................................ 20
แสดงการสตาร์ทโปรแกรม Apache และ MySQL ...................................................................20
แสดงผลการทางานของ AppServ บนหน้าเว็บบราวเซอร์ ........................................................20
แสดงโฟลเดอร์องค์ประกอบต่างๆ ที่สาคัญของ AppServ ........................................................ 21
kai 'oswald' seidler ผู้พัฒนา XAMPP ................................................................................... 22
ขั้นตอนการติดตั้ง XAMPP ........................................................................................................ 22
ขั้นตอนการติดตั้ง XAMPP ในส่วนของการสร้าง Shortcut ใน Start menu และ Desktop...23
ขั้นตอนการติดตั้ง XAMPP ในส่วนของการทวนถามความถูกต้องของตาแหน่งติดตั้ง ............... 23
ขั้นตอนการติดตั้ง XAMPP ในส่วนของการติดตั้ง portable แบบ without drive letters..... 24
ขั้นตอนการติดตั้ง XAMPP แสดงผลการดาเนินการติดตั้ง XAMPP แบบพกพา ....................... 24
ขั้นตอนการติดตั้ง XAMPP ในส่วนของการปรับโซนเวลาในไฟล์ php.ini และ my.ini ............ 25
ขั้นตอนการติดตั้ง XAMPP ในส่วนของการปรับเปลี่ยนการใช้งานเพิ่มเติม ............................... 25
แสดงขั้นตอนการเปิด XAMPP Control Panel ....................................................................... 25
แสดงหน้าจอ XAMPP Control Panel เพื่อควบคุมโปรแกรมต่างๆ ที่เกี่ยวข้อง ......................26
แสดงผลการทางานของ XAMPP บนหน้าเว็บบราวเซอร์ .......................................................... 26
- 14. (12)
สำรบัญภำพ (ต่อ)
ภำพที่
2.27
2.28
4.1
5.1
5.2
5.3
5.4
5.5
5.6
7.1
8.1
9.1
10.1
10.2
10.3
10.4
10.5
10.6
10.7
10.8
10.9
10.10
11.1
13.1
13.2
13.3
14.1
14.2
14.3
หน้ำที่
แสดงการสร้างโฟลเดอร์เก็บเอกสารเว็บเพจของ XAMPP ........................................................ 26
แสดงการบันทึกไฟล์ลงในโฟลเดอร์เก็บเอกสารเว็บเพจของ XAMPP เพื่อทดสอบและใช้งาน... 27
แสดงตัวอย่างตัวดาเนินการและนิพจน์ ......................................................................................58
แสดงแผนภาพการไหล (Flow Chart) ของคาสั่ง if .................................................................. 68
แสดงแผนภาพการไหลของคาสั่ง if ... else .............................................................................. 69
แสดงแผนภาพการไหลของคาสั่ง if ... elseif ............................................................................ 70
แสดงแผนภาพการไหลของคาสั่ง while ................................................................................... 72
แสดงแผนภาพการไหลของคาสั่ง do ... while ......................................................................... 73
แสดงแผนภาพการไหลของคาสั่ง for ........................................................................................ 74
แสดงหน้าเว็บเพจสาหรับเริ่มต้น Upload ไฟล์ ...................................................................... 115
แสดงตัวอย่างผลลัพธ์การสร้างปฏิทินออนไลน์ ....................................................................... 143
แสดงการเปิดไฟล์รูปภาพ ........................................................................................................ 156
แสดงตัวอย่างตัวรับข้อมูลของฟอร์ม ....................................................................................... 170
แสดงตัวอย่างผลลัพธ์ของฟอร์มโดยใช้แท็ก input ชนิด "Text" ............................................. 172
แสดงตัวอย่างผลลัพธ์ของการใช้แท็ก textarea ......................................................................173
แสดงตัวอย่างผลลัพธ์ของการใช้แท็ก label ............................................................................174
แสดงตัวอย่างผลลัพธ์ของการใช้แท็ก fieldset ในการจัดกลุ่มของแท็ก input .......................175
แสดงตัวอย่างผลลัพธ์ของการใช้แท็ก OPTION ภายในแท็ก select ...................................... 176
แสดงตัวอย่างผลลัพธ์ของการใช้แท็ก OPTGROUP ................................................................ 177
แสดงตัวอย่างผลลัพธ์ของการใช้แท็ก OPTION ภายในแท็ก select ...................................... 177
แสดงตัวอย่างผลลัพธ์ของการใช้แท็ก button ........................................................................ 178
แสดงการจัดการข้อมูลจากฟอร์มทางด้านเซิร์ฟเวอร์ ...............................................................179
สร้างฟอร์มสาหรับการ Login กรณีศึกษาและประยุกต์ใช้งานเซสชั่น .....................................194
เปรียบเทียบการทางานแบบเดิม กับ AJAX ............................................................................ 213
โครงสร้างของ AJAX ในปัจจุบัน ............................................................................................. 213
หลักการทางานของ AJAX ...................................................................................................... 214
หน้าล็อกอินเพื่อเข้าสู่ระบบของ phpMyAdmin เวอร์ชัน 3.5.4 ............................................ 257
หน้าเพจหลังจากล็อกอินเข้าสู่ระบบ phpMyAdmin เวอร์ชัน 3.5.4 ..................................... 257
แสดงขั้นตอนการสร้างฐานข้อมูลใหม่ ..................................................................................... 258
- 15. (13)
สำรบัญภำพ (ต่อ)
ภำพที่
14.4
14.5
14.6
14.7
14.8
14.9
14.10
14.11
14.12
14.13
14.14
14.15
14.15
หน้ำที่
แสดงขั้นตอนการสร้างตารางใหม่ ........................................................................................... 258
แสดงขั้นตอนการสร้างขอบเขตข้อมูลในตาราง ....................................................................... 259
แสดงขั้นตอนการสร้างตารางและกาหนดขอบเขตข้อมูลในตาราง .......................................... 259
แสดงขั้นตอนการแทรกข้อมูลลงในตาราง ............................................................................... 260
แสดงตัวอย่างรายการสาหรับการแทรกข้อมูลลงในตาราง ...................................................... 260
แสดงขั้นตอนการอ่านข้อมูลในตาราง ......................................................................................261
แสดงขั้นตอนการเลือกข้อมูลเพื่อแก้ไขข้อมูล .......................................................................... 261
แสดงขั้นตอนการเลือกข้อมูลเพื่อลบข้อมูล ..............................................................................262
แสดงตัวอย่างการเลือกข้อมูลเพื่อแก้ไขโครงสร้างข้อมูล ..........................................................262
แสดงตัวอย่างการลบข้อมูลในตารางและลบตาราง ................................................................. 263
แสดงตัวอย่างการใช้คาสั่ง SQL ผ่าน "Run SQL Query" ...................................................... 263
แสดงตัวอย่างการใช้คาสั่ง SQL ผ่าน "Run SQL Query" เพื่อค้นหาข้อมูล ........................... 264
แสดงตัวอย่างการใช้คาสั่ง SQL ผ่าน "Run SQL Query" เพื่อกาหนดสิทธิ์ ........................... 264
- 16. บทที่ 1
บทนำ
PHP คืออะไร
PHP ย่อมาจาก ''PHP Hypertext Preprocessor'' เป็นภาษา Server-Side
Script อีกภาษาหนึ่งเช่นเดียวกันกับ ASP ที่มีการทางานที่เครื่องคอมพิวเตอร์ฝั่ง
Server ซึ่งรูปแบบในการเขียนคาสั่งการทางานนั้นจะมีลักษณะคล้ายกับภาษา Perl
หรือภาษา C และสามารถใช้ร่วมงานกันกับ ภาษา HTML ได้อย่างมีประสิทธิภาพ
หมำยเหตุ ในการสร้างเว็บจะใช้ Script อยู่ 2 รูปแบบคือ
Server-Side Script เป็นลักษณะการทางานบนเครื่อง Server และแปลออกมาเป็นภาษา HTML เช่น
PHP, ASP, CGI
Client-Side Script เป็นลักษณะการทางานบนเครื่อง Client (เครื่องผู้ใช้) เช่น JavaScript, VBScript
PHP สำมำรถทำอะไรได้บ้ำง
ความสามารถของ PHP นั้นสามารถที่จะทางานในลักษณะ Dynamic Web ได้ทุกรูปแบบ
เหมือนกับ CGI หรือ ASP ไม่ว่าจะเป็นการจัดการดูแลระบบฐานข้อมูล ระบบรักษาความปลอดภัย การรับ
– ส่ง Cookies โดยที่ PHP นั้นสามารถที่จะติดต่อกับโปรแกรมจัดการฐานข้อมูลที่มีอยู่มากมาย ดังนี้
Adabas D
InterBase Solid
Microsoft Access
DBase
mSQL
Sybase
Empress
MySQL
Velocis
FilePro
Oracle
Unix dbm
Informix
PostgreSQL
MS SQL Server
แต่ความสามารถที่พิเศษกว่านี้ก็คือ PHP สามารถที่จะติดต่อกับบริการต่างๆ ผ่านทางโพรโตคอล
(Protocol) เช่น IMAP, SNMP, NNTP, POP3, HTTP และยังสามารถติดต่อกับ Socket ได้อีกด้วย
- 17. 2 บทที่ 1 บทนา
ประวัติควำมเป็นมำของ PHP (History of PHP)
Rasmus Lerdorf
Zeev Suraski
Andi Gutmans
ภำพที่ 1.1 ผู้ร่วมพัฒนา PHP
ที่มา: http://lerdorf.com/pics/rl.jpg ,
http://tec20ten.files.wordpress.com/2010/02/dsc_0156-copy.jpg
และ http://tech.ccidnet.com/col/attachment/2010/6/2037287.jpg
(W. Jason Gilmore: 2) PHP ถูกคิดค้นขึ้นมาในปี 1995 โดยนักพัฒนาที่ชื่อว่า Rasmus
Lerdorf แต่เดิมนั้นเขาได้พัฒนาเว็บเพจของเขาเองเพียงเพื่อแนะนาประวัติส่วนตัวออนไลน์ของเขาด้วย
ภาษาสคริปต์ Perl/CGI แต่ภาษาสคริปต์ดังกล่าวค่อนข้างยุ่งยากและมีข้อจากัด เป็นเหตุเริ่ มต้นให้เขา
พัฒนาภาษาสคริปต์ใหม่ ง่ายต่อการพัฒนา ในช่วงเริ่มต้นพัฒนานั้น ทาหน้าที่เพียง 2 ประการเท่านั้น คือ
1)เพื่อต้องการทราบถึงผู้เข้าชมเว็บของเขามากน้อยเพียงใด และ 2)เพื่อแสดงผลจานวนผู้เข้าชมเว็บเพจ
เครื่องมือในครั้งนั้นเขาได้ตั้งชื่อว่า PHP-toolset (Personal Home Page toolset)
PHP-toolset มีเสียงตอบรับจากผู้ใช้งานเป็นจานวนมาก และเขายังคงพัฒนาอย่างต่อเนื่องมี
การปรับแต่งการแปลงและส่งข้อมูลตัวแปรผ่าน HTML form และเปลี่ยนภาษาที่ใช้ในการพัฒนา โดยใช้
ภาษาซี (C Language) แทนภาษา Perl และเผยแพร่ผลงานของเขาในเดือนพฤศจิกายน ค.ศ.1997 เป็น
เวอร์ชัน PHP 2.0 หรือรู้จักกันในนาม Personal Home Page/Form Interpreter (PHP/FI) และได้เสียง
ตอบรับที่ดีจากเหล่าโปรแกรมเมอร์ทั่วโลก
PHP เวอร์ชันใหม่ ได้มีการเปลี่ยนแปลงและมีทีมพัฒนาทีมงาน คือ Zeev Suraski และ Adni
Gutmans ทาการวิเคราะห์พื้นฐานของ PHP/FI แต่ยังคงแนวคิดเดิม คือ ทางานผสมผสานร่วมกับภาษา
HTML และเพิ่มความสมบูรณ์ของภาษา PHP มากขึ้น เป็นเวอร์ชัน 3 และเผยแพร่ในเดือนมิถุนายน ค.ศ.1998
PHP ได้มีการพัฒนาอย่างต่อเนื่องมีหลายร้อยฟังก์ชั นที่เพิ่มเข้ามาและจานวนผู้ใช้ที่กาลังเติบโต
ในปี 1999 บริษัท Netcraft (http://www.netcraft.com/) ได้ทาการวิจัยทางอินเทอร์เน็ตและวิเคราะห์
ข้อมูล จากรายงานพบว่า มีผู้ใช้งานภาษา PHP มากกว่า 1 ล้านเว็บไซต์ ทาให้ PHP ได้รับความนิยมมาก
ที่สุด และทีมพัฒนา Zeev Suraski และ Andi Gutmans ได้มีความคิดริเริ่มต้องการให้ PHP ทาการ
ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL
- 18. บทที่ 1 บทนา 3
ประมวลผลได้เร็วขึ้นในลักษณะ parser PHP เพื่อแยกประมวลผล ร่วมกับ Zend Engine ของบริษัท
Zend Technology จากัด (http://www.zend.com/) เป็นเครื่องมือหลักในการขับเคลื่อนสาคัญ ผลได้
เป็น PHP เวอร์ชัน 4
PHP เวอร์ชัน 4
เมื่อวันที่ 22 พฤษภาคม ค.ศ.2000 ประมาณ 18 เดือน หลังจากที่เผยแพร่ใช้งาน PHP เวอร์ชัน
4 อย่างเป็นทางการ หลายคนถือว่าภาษา PHP เป็นภาษาที่มีเสถียรภาพสูงภาษาหนึ่งและได้รับความนิยม
อย่างแพร่หลาย ราวๆ ช่วงปลายเดือน บริษัท Netcraft ได้ประมาณการว่า PHP จะมีผู้นาไปติดตั้งและใช้
งาน ประมาณ 3.6 ด้านโดเมน (Domain) สาหรับ PHP เวอร์ชัน 4 ได้เพิ่มและปรับปรุงคุณสมบัติ
ดังต่อไปนี้
กำรจัดกำรทรัพยำกรที่ดีขึ้น (Improved resource handling)
ปรับแก้หนึ่งในปัญหาหลักของเวอร์ชัน 3 ให้มีความยืดหยุ่น สามารถนาไปออกแบบและ
ประยุกต์ใช้กับระบบงานขนาดใหญ่ ในเวอร์ชันก่อนหน้าไม่ได้มีเจตนาจะใช้ในองค์กรขนาดใหญ่ แต่เนื่อง
ด้วยมีการใช้อย่างกว้างขวางและประโยชน์ ทาให้ผู้ พัฒ นาได้คิดและพัฒ นาภาษาให้ส ามารถใช้งานได้
หลากหลาย
สนับสนุนกำรเขียนโปรแกรมเชิงวัตถุ (Object-oriented support)
PHP เวอร์ชัน 4 สามารถพัฒนาระบบในลักษณะของการเขียนโปรแกรมเชิงวัตถุ ซึ่งมีฟังก์ชันที่ช่วย
ในการทางาน แต่ยังไม่ครอบคลุมการทางานมากเท่าไหร่ อย่างไรก็ตามคุณสมบัติใหม่มีบทบาทสาคัญและ
ดึงดูดให้ผู้ใช้งานหรือนักพัฒนาระบบ ที่ต้องการพัฒนาโปรแกรมเชิงวัตถุแบบดั้งเดิม หรือเรียกว่า ภาษา OOP
นอกจากนั้นยังมีคุณสมบัติ เช่น ระบบแจ้งเตือน overloading และ run-time class ที่ช่วยป้องกันปัญหา
เวลาพัฒนาระบบ สาหรับการเขียนโปรแกรมเชิงวัตถุที่สมบูรณ์แบบนั้น ควรใช้ PHP เวอร์ชัน 5
สนับสนุนกำรจัดกำรเซสชั่น (Native session-handling support)
การจัดการเซสชั่น HTTP ใช้ได้กับทั้งในเวอร์ชัน 3.x โดยผู้ใช้สามารถเรียกใช้งานผ่านบน phplib
(http://phplib.sourceforge.net) แต่สาหรับเวอร์ชัน 4 ผู้ใช้งานสามารถใช้งานได้เลย ซึ่งได้รวม
ความสามารถไว้แล้ว คุณลักษณะนี้ได้มาจากการสารวจกิจกรรมและความพึงพอใจของผู้ใช้ส่วนใหญ่
กำรเข้ำรหัส (Encryption)
นาไลบรารี่มาจาก MCrypt (http://mcrypt.sourceforge.net) มารวมไว้ใน PHP เวอร์ชัน 4
ก่อนการเผยแพร่ ผู้ใช้สามารถเลือกใช้รูปแบบการเข้ารหัสได้แบบ hash โดยมีอัลกอริทึมที่ได้รวมไว้ ได้แก่
Blowfish, MD5, SHA1 และ TripleDES ฯลฯ
สนับสนุน ISAPI (ISAPI support)
สนับสนุน ISAPI ให้ผู้ใช้สามารถใช้ PHP ร่วมกับเว็บเซิร์ฟเวอร์ของไมโครซอฟท์ คือ IIS และ
Apache เว็บเซิร์ฟเวอร์
ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL
- 19. 4 บทที่ 1 บทนา
สนับสนุน COM / DCOM (Native COM/DCOM support)
เปิดโอกาสให้ผู้ใช้งานสามารถเรียกใช้และทางานร่วมกันกับโปรแกรมประยุกต์บนระบบปฏิบัติ
Windows
สนับสนุนกำรทำงำนร่วมกับภำษำ Java (Native Java support)
PHP เวอร์ชัน 4 ได้เพิ่มประสิทธิภาพในการทางานร่วมกับภาษา Java
รองรับไวยำกรณ์และนิพจน์ภำษำ Perl (Perl Compatible Regular Expressions (PCRE)
library)
ภาษา Perl เป็นภาษาที่มีความยาวและซับซ้อน มีรูปประโยคที่เป็นอิสระ แต่การทางานของภาษา
Perl เป็นภาษาที่ยอมรับอย่างกว้างขวาง มีประสิทธิภาพการ และมีบทบาทสาคัญ ดังนั้น PHP เวอร์ชัน 4
ได้รวม ฟังก์ชันการทางานของภาษา Perl ไว้ด้วย เพื่อเป็นทางเลือกหนึ่งสาหรับการพัฒนาระบบ และทา
ให้ใช้งานได้ง่ายขึ้น
นอกจากคุณสมบัติต่างๆ เหล่านี้ ยังมีอีกหลายร้อยฟังก์ชันที่ถูกเพิ่มเข้ามาใน PHP เวอร์ชัน 4
รองรับความหลากหลาย ไลบรารี่ และโมดูลดีๆ มากมาย จากแหล่งต่างๆ เปิดใจรับสิ่งดีๆ ที่มีอยู่ มากมาย
ในสากล นามาเพิ่มขีดความสามารถของตัวเอง หลายร้อยฟังก์ชันเหล่านี้จะกล่าวถึงรายละเอียดการใช้งาน
ต่อไปในหนังสือเล่มนี้ ผู้แต่งหนังสือเล่มนี้หวังเป็นอย่างยิ่งว่า ผู้อ่านจะเปิดใจรับสิ่งดีๆ ที่มอบให้แล้วนาไป
พัฒนาตนเองให้มีความรู้ความสามารถ เพิ่มประสิทธิภาพแก่ตนเอง เหมือนดังเช่น PHP
PHP เวอร์ชัน 5
PHP เวอร์ชัน 5 ยังคงวิวัฒนาการไม่หยุดยั้งถึงแม้ว่ารุ่นก่อนหน้าจะมีความสามารถมากมาย
มหาศาลโดยการเพิ่มฟังก์ชัน ไลบรารี่ และอื่นๆ อีกมากมาย มาถึง PHP เวอร์ชัน 5 ซึ่งมีการปรับปรุงอีก
มากมายเช่นเดิม เพิ่มคุณสมบัติอีกหลายประการ ผู้แต่งเองยังใช้ความสามารถของเวอร์ชัน 4 ยังไม่หมด
เวอร์ชัน 5 ก็ออกมาทาหัวใจหวั่นไหวใคร่รู้
PHP 5 มีการปรับปรุงความสามารถเพิ่มเติมขึ้นมาจาก PHP 4 มากมาย ในหัวข้อนี้จะกล่าวถึง
ความสามารถที่สาคัญหลัก ๆ ที่เพิ่มเติมขึ้นมาใน PHP 5 ดังนี้
1. ความสามารถทางด้าน OOP (Object-Oriented Programming) ความสามารถทางด้านการ
เขียนโปรแกรมเชิงวัตถุหรือ OOP ได้มีมาตั้งแต่ PHP 3 แล้ว และได้ปรับปรุงต่อเนื่องมาจนถึง PHP 4 แต่
ความสามารถทางด้าน OOP ใน PHP 4 นั้นยังไม่สมบูรณ์นักและยังขาดฟีเจอร์ที่สาคัญในหลายด้าน เช่น
การประกาศ Constructors และ Destructors การกาหนดขอบเขตของตัวแปรและเมธอดเป็น public,
protected, private เป็นต้น โดยใน PHP 5 ได้ปรับปรุงความสามารถทางด้าน OOP ให้สมบูรณ์ขึ้น ทา
ให้โปรแกรมเมอร์สามารถเขียน PHP โดยใช้หลักการของ OOP ได้อย่างสมบูรณ์แบบ
2. เพิ่ม MySQLi Extension MySQL นั้นเป็นระบบจัดการฐานข้อมูลที่ได้รับความนิยมในการ
นามาพัฒนา Web Application ร่วมกับ PHP มานาน โดยใน MySQL เวอร์ชัน 4.1 และเวอร์ชัน 5 ได้
ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL
- 20. บทที่ 1 บทนา 5
เพิ่มเติมฟีเจอร์ที่สาคัญมากมาย เช่น Prepared statement การเชื่อมต่อฐานข้อมูลโดยใช้ SSL การใช้
Multi-query, Transaction เป็นต้น ดังนั้น PHP 5 จึงได้มีการเพิ่ม MySQL Extention ขึ้นมาใหม่โดยใช้
ชื่อว่า MySQLi จะช่วยให้สามารถนาความสามารถใหม่ ๆ ของ MySQL ออกมาใช้ได้อย่างเต็มที่
3. ผนวก SQLite ไว้ใน PHP แม้ว่า MySQL จะเป็นระบบจัดการฐานข้อมูลที่ได้รับความนิยมและ
นามาใช้ร่วมกับ PHP มากที่สุด แต่ใน PHP 5 นั้นได้ผนวกรวมเอา SQLite ซึ่งเป็นระบบจัดการฐานข้อมูล
ขนาดเล็กเข้าไว้ด้วย โดยที่ผู้ใช้ไม่ต้องติดตั้งระบบจัดการฐานข้อมูลเพิ่มเติมก็สามารถเขียนโปรแกรม PHP
เพื่อติดต่อกับฐานข้อมูลได้เลย ซึ่งช่วยอานวยความสะดวกในการเขียนโปรแกรมได้มากทีเดียว
4. สนับสนุน XML และ SOAP อย่างเต็มประสิทธิภาพ ใน PHP 5 มีการปรับปรุงความสามารถ
ของ XML เพิ่มเติมโดยจะมีไลบรารี libxml2 ซึ่งเป็นไลบรารีมาตรฐานที่ PHP ใช้ติดต่อกับ XML
นอกจากนี้ยังปรับปรุงและเพิ่มเติมในส่วนของ DOM(Document Object Model), XSLT (Extensible
Stylesheet Language Transformations) และ SimpleXML โดยการออกแบบให้สามารถทางาน
ร่วมกับ XML ได้ดียิ่งขึ้น นอกจากนี้ใน PHP 5 ยังสนับสนุน SOAP ซึ่งเป็นส่วนประกอบสาคัญในการ
พัฒนาเว็บเซอร์วิส
5. การตรวจจับและจั ดการข้อผิดพลาด ใน PHP 5 มีการพัฒนาระบบตรวจจับและจัดการ
ข้อผิดพลาดขึ้นมา เรียกว่า exception handling ซึ่งจะคล้ายกับที่มีในภาษา Java และ C++ ซึ่งจะช่วย
อานวยความสะดวกและเพิ่มประสิทธิภาพในการตรวจสอบและจัดการข้อผิด พลาดที่อาจจะเกิดขึ้ นในการ
รันโปรแกรมได้
6. เพิ่ม Iterator Iterator ใน PHP 5 เป็นการใช้คาสั่ง foreach ในการวนลูปร่วมกับข้อมูลชนิด
ต่าง ๆ ได้หลายชนิด ไม่ว่าจะเป็นอ็อบเจ็กต์ต่าง ๆ เอกสาร XML โครงสร้างไดเรกทอรี่หรือผลลัพธ์จากการ
query ฐานข้อมูล เป็นต้น
เป็นอย่างไรกันบ้างครับกับความสามารถใหม่ ๆ ของ PHP 5 คงทาให้ผู้อ่านเห็นภาพรวมที่ชัดเจน
ขึ้นและหลายคนอาจจะอยากทดลองใช้กันบ้างแล้ว ซึ่ง นอกจากความสามารถหลัก ๆ ทั้ง 6 ข้อที่ได้อธิบาย
ไว้ข้างต้น PHP 5 ยังมีความสามารถที่เพิ่มเติมขึ้นใหม่อีกมากมายที่ยังไม่ได้อธิบายไว้ ณ ที่นี้ เช่น การใช้
ส่วนขยายเพิ่มเติม Tidy เพื่อให้มั่นใจได้ว่าผลลัพธ์ที่แสดงออกมานั้นอยู่รูปแบบของ HTML หรือ XHTML
ที่ถูกต้อง การจัดการหน่วยความจาที่ดีขึ้นรวมไปถึงการปรับปรุงและแก้ไขข้อผิดพลาดเดิมใน PHP 4 อีก
หลายจุดให้ดียิ่งขึ้น
PHP เวอร์ชัน 6
PHP เวอร์ชัน 6 ปัจจุบันกาลังอยู่ในขั้นพัฒนาและปรับปรุงขณะนี้ยังเป็น Beta Version ยังคงใช้
Zend engine เป็นแกนหลัก การเปลี่ยนแปลงที่สาคัญ คือ
1. ไม่มีคุณสมบัติ register_global, magic_quote_gpc และ safe_mode
ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL
- 21. 6 บทที่ 1 บทนา
2. ยกเลิกตัวแปร HTTP_*_VARS ทั้งหมด เช่น HTTP_POST_VARS และ HTTP_COOKIE_VARS
เป็นต้น
3. สนับสนุนการทางานกับสตริงแบบ Unicode
4. เพิ่มชนิดข้อมูลเลขจานวนเต็มขนาด 64 บิต
MySQL คืออะไร
MySQL
เป็ น ระบบจั ด การฐานข้ อ มู ล เชิ ง สั ม พั น ธ์
(Relational Database Management System) โดยใช้ภาษา
SQL แม้ว่า MySQL เป็นซอฟต์แวร์โอเพนซอร์ส แต่แตกต่างจาก
ซอฟต์แวร์โอเพนซอร์สทั่วไป โดยมีการพัฒนาภายใต้บริษัท MySQL
AB ในประเทศสวีเดน โดยจัดการ MySQL ทั้งในแบบที่ให้ใช้ฟรี
และแบบที่ใช้ในเชิงธุรกิจ
MySQL สร้างขึ้นโดยชาวสวีเดน 3 คน และชาวฟินแลนด์ ชื่อ David Axmark, Allan Larsson
และ Michael "Monty" Widenius.
David Axmark
Allan Larsson
Michael "Monty" Widenius
ภำพที่ 1.2 ผู้ร่วมพัฒนา MySQL
ที่มา: http://www.mccullagh.org/db9/10d-1/david-axmark-mysql.jpg
http://www.wire2011.eu/upload/participant/290/Allan_Larsson.JPG
และ http://www.abclinuxu.cz/images/screenshots/2/1/150712-ulf-michael-montywidenius-13235.jpg
ปัจจุบันบริษัทซันไมโครซิสเต็มส์ (Sun Microsystems, Inc.) เข้าซื้อกิจการของ MySQL AB
เรียบร้อยแล้ว ฉะนั้นผลิตภัณฑ์ภายใต้ MySQL AB ทั้งหมดจะตกเป็นของบริษัทซันไมโครซิสเต็มส์
ชื่อ "MySQL" อ่านออกเสียงว่า "มายเอสคิวเอล" (maɪˌɛskjuːˈɛl) หรือ "มายเอสคิวแอล"
(ในการอ่านอักษร L ในภาษาไทย) ซึ่งทางซอฟต์แวร์ไม่ได้อ่าน มายซีเควล หรือ มายซีควล เหมือนกั บ
ซอฟต์แวร์จัดการฐานข้อมูลตัวอื่น
ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL
- 22. บทที่ 1 บทนา 7
รุ่นของผลิตภัณฑ์
รุ่นของผลิตภัณฑ์นั้นแบ่งออกมาได้ 3 สายการผลิ ต ได้แก่ เวอร์ชันใช้ฟรี เวอร์ชันการค้า และ
เวอร์ชันที่สนับสนุนกับผลิตภัณฑ์ SAP (MAX DB) ความแตกต่าง คือ เวอร์ชัน community นั้นสามารถ
นาไปใช้งานได้ฟรีแต่ขาดการสนับสนุนหรือการช่วยเหลือเมื่อมีปัญหาเกิดขึ้น เวอร์ชันที่เป็นคอมเมอร์เชียลนั้น
ให้บริการด้านความสนับสนุนเมื่อมีปัญหา (ซื้อบริการ) สรุปคร่าวๆ ประเภทของ MySQL ให้เลือกใช้ดังนี้
MySQL Enterprise
MySQL Cluster
MySQL Embedded
MySQL Community (opensource)
ควำมสำมำรถที่เพิ่มขึ้น
ในเวอร์ชัน 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 เริ่มสนับสนุนการทา Partition Database ตารางเวลาสาหรับเหตุการณ์ต่างๆ
(Event schedule)
ประเภทกำรจัดเก็บข้อมูล (Database Storage Engine) ที่สนับสนุน
MyISAM ค่าปกติ (default)
InnoDB สนับสนุนการทา ทรานแซคชั่น (transaction) แบบ ACID
Memory การจัดเก็บในหน่วยความจา ใช้เป็นตารางชั่วคราวเพื่อความรวดเร็ว เนื่องจากเก็บไว้ใน
หน่วยความจา ทาให้มีความเร็วในการทางานสูงมาก
Merge เป็นการรวม Table หลาย ๆ ตัวให้แสดงผล หรือแก้ไข เสมือนเป็นข้อมูลจาก Table เดียว
Archive เหมาะสาหรับการจัดเก็บข้อมูลพวก log file,ข้อมูลที่ไม่ต้องมีการ คิวรี่ (query) หรือใช้
บ่อยๆ เช่น log file เพื่อประโยชน์ในการตรวจสอบย้อนหลัง (Security Audit Information)
Federated สาหรับการจัดเก็บแบบปลายทาง (remote server) แทนที่จะเป็นการจัดเก็บแบบ
local เหมือนการจัดเก็บ (Storage) แบบอื่นๆ
NDB สาหรับการจัดเก็บแบบ คลัสเตอร์ (cluster)
CSV เก็บข้อมูลจาก Text ไฟล์โดยอาศัยเครื่องหมาย คอมมา (comma) เป็นตัวแบ่งฟิลด์
ชนิดของข้อมูลที่สนับสนุน
ข้อมูลชนิดตัวเลข
ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL
- 23. 8 บทที่ 1 บทนา
BIT ใช้สาหรับเก็บข้อมูลชนิดเลขสองที่มีสัญลักษณ์เพียงสองตัว ประกอบด้วย 0 (ศูนย์)
กับ 1 (หนึ่ง) บางครั้งอาจหมายถึงการที่มีโอกาสเลือกได้เพียง 2 ทาง เช่น ปิดกับเปิด
ไม่ใช่กับใช่ เท็จกับจริง ซ้ายกับขวา เป็นต้น
TINYINT ใช้สาหรับจัดเก็บข้อมูลชนิดตัวเลขจานวนเต็ม ขนาด 8 บิต
SMALLINT ใช้สาหรับเก็บข้อมูลชนิดตัวเลขจานวนเต็ม ขนาด 16 บิต
MEDIUMINT ใช้สาหรับเก็บข้อมูลชนิดตัวเลขจานวนเต็ม ขนาด 24 บิต
INT ใช้สาหรับเก็บข้อมูลชนิดตัวเลขจานวนเต็ม ขนาด 32 บิต
BIGINT ใช้สาหรับเก็บข้อมูลชนิดตัวเลขจานวนเต็ม ขนาด 64 บิต
FLOAT ใช้สาหรับเก็บข้อมูลชนิดตัวเลขจานวนจริง (เลขที่มเศษทศนิยม) ขนาด 32 บิต
ี
DOUBLE ใช้สาหรับเก็บข้อมูลชนิดตัวเลขจานวนจริง เช่นเดียวกับ FLOAT ขนาด 64 บิต
ข้อมูลชนิดวันที่และเวลา
DATETIME ใช้สาหรับจัดเก็บข้อมูล วันเดือนปีและเวลา ขนาด 64 บิต แสดงผลใน
รูปแบบ YYYY-MM-DD HH:MM:SS
DATE ใช้สาหรับจัดเก็บข้อมูลเฉพาะข้อมูลวันเดือนปี ขนาด 24 บิต แสดงผลในรูปแบบ
YYYY-MM-DD
TIME ใช้สาหรับจัดเก็บข้อมูลเฉพาะข้อมูลเวลา ขนาด 24 บิต แสดงผลในรูปแบบ
HHH:MM:SS โดยที่ HHH จะคืน ค่าจาก -838 ถึง 838
TIMESTAMP ใช้สาหรับเก็บข้อมูลชนิดวันที่และเวลา เช่นเดียวกับ DATETIME แต่จะ
เก็ บ ในรู ป แบบของ YYYYMMDDHHMMSS หรื อ YYMMDDHHMMSS หรื อ
YYYYMMDD หรือ YYMMDD แล้วแต่ว่าจะระบุค่าแอตทริบิวต์ TIMESTAMP[(M)] โดย
กาหนด M เป็น 14 หรือ 12 หรือ 8
YEAR ใช้สาหรับเก็บข้อมูลปีเท่านั้น ขนาด 8 บิต แสดงผลในรูปแบบ YYYY ซึ่งเป็นค่า
ตั้งแต่ 1901 - 2155 เท่านั้น
ข้อมูลชนิดสตริง
CHAR ใช้สาหรับเก็บข้อมูลชนิดสตริง ขนาดสูงสุดได้ไม่เกิน 255 อักขระ ถ้าอักขระที่ใช้
ยาวไม่เท่ากับที่กาหนดไว้ อักขระที่เหลือ จะถูกแทนที่ด้วยช่องว่าง
VARCHAR (ย่อมาจาก Variable Character Field หมายถึง กลุ่มข้อมูลตัวอักขระที่ไม่
สามารถระบุความยาวได้ ) ใช้สาหรับเก็บข้อมูลชนิดสตริง ชนิดข้อมูลประเภท varchar
สามารถเก็บข้อมูลตัวอักขระขนาดเท่าใดก็ได้ที่ไม่เกินความยาวที่จากัดไว้ (เก็บข้อมูล
ตามที่รับมาจริงเท่านั้น) ขนาดสูงสุดได้ไม่เกิน 255 อักขระ
ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL
- 24. บทที่ 1 บทนา 9
BINARY ใช้ส าหรั บ เก็บข้อมูล ชนิดเลขสองที่มีสั ญลั กษณ์เพียงสองตัว เหมือน BIT
ประกอบด้วย 0 (ศูนย์) กับ 1 (หนึ่ง) บางครั้งอาจหมายถึงการที่มีโอกาสเลือกได้เพียง 2
ทาง เช่น ปิดกับเปิด ไม่ใช่กับใช่ เท็จกับจริง ซ้ายกับขวา เป็นต้น
VARBINARY ใช้สาหรับเก็บข้อมูลชนิดสตริง ขนาดสูงสุดไม่เกิน 8,000 อักขระ มีลักษณะ
การเก็บคล้าย VARCHA คือ การเก็บข้อมูลตามที่รับมาจริงเท่านั้น
TINYTEXT ใช้สาหรับเก็บข้อมูลชนิดสตริง ขนาดสูงสุดไม่เกิน 255 อักขระ สามารถใช้
งานฟีเจอร์ FULL TEXT SEARCH ของ MySQL
TEXT ใช้สาหรับเก็บข้อมูลชนิดสตริง เช่นเดียวกับ TINYTEXT ขนาดสูงสุดไม่เกิน 65,535
อักขระ (64 KB) เหมาะสาหรับเก็บข้อมูลจาพวกเนื้อหาทีมีความยาวหรือจานวนมาก
่
MEDIUMTEXT ใช้สาหรับเก็บข้อมูลชนิดสตริง เช่นเดียวกับ TINYTEXT ขนาดสูงสุดไม่
เกิน 16,777,215 อักขระ (16 MB)
LONGTEXT ใช้สาหรับเก็บข้อมูลชนิดสตริง เช่นเดียวกับ TINYTEXT ขนาดสูงสุดไม่เกิน
4,294,967,295 อักขระ (4 GB)
ENUM ใช้สาหรับ เก็บ เซตของข้อมูลชุดหนึ่งที่มีจานวนสมาชิกที่กาหนดไว้แน่นอน
และทราบค่าทุกตัว มักจะเป็นข้อมูลที่มีลักษณะคงที่ ขนาดสูงสุดไม่เกิน 65,535 อักขระ
SET ใช้สาหรับเก็บข้อมูลที่เป็นกลุ่มของข้อมูลที่ยอมให้เลือกได้ 1 ค่าหรือหลายๆ ค่า ซึ่ง
สามารถกาหนดได้ถึง 64 ค่า
ข้อมูลชนิด BLOB (Binary Large Object)
TINYBLOB ใช้สาหรับเก็บข้อมูลชนิดไบนารี ได้แก่ ไฟล์ข้อมูลต่างๆ เช่น ไฟล์รูปภาพ
ไฟล์มัลติมีเดีย เป็นต้น คือ ไฟล์อะไรก็ตามที่อัพโหลดผ่านฟอร์มอัพโหลดไฟล์ในภาษา
HTML ขนาดสูงสุดไม่เกิน 256 ไบต์
BLOB ใช้สาหรับเก็บข้อมูลชนิดไบนารี เช่นเดียวกับ TINYBLOB ขนาดสูงสุดได้ไม่เกิน
64,000 ไบต์
EDIUMBLOB ใช้สาหรับเก็บข้อมูลชนิดไบนารี เช่นเดียวกับ TINYBLOB ขนาดสูงสุดได้
ไม่เกิน 16 เมกะไบต์ (16 MB)
LONGBLOB ใช้สาหรับเก็บข้อมูลชนิดไบนารี เช่นเดียวกับ TINYBLOB ขนาดสูงสุดได้ไม่
เกิน 4 กิกะไบต์ (4 GB)
หมำยเหตุ
การกาหนดชนิด ค่าสูงสุด ค่าต่าสุด และตัวอย่างการใช้งาน สามารถอ่านรายละเอียดเพิ่มเติม ได้
ในบทที่ 14 เรื่องฐานข้อมูล MySQL และการใช้งาน phpMyAdmin
ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL
- 25. 10 บทที่ 1 บทนา
กำรใช้งำน
MySQL เป็นที่นิยมใช้กันมากสาหรับฐานข้อมูลสาหรับเว็บไซต์ เช่น มีเดียวิกิ และ phpBB และ
นิยมใช้งานร่วมกับภาษาโปรแกรม PHP เป็นหลัก ดังนั้นจะเห็นได้จากคู่มือคอมพิวเตอร์ต่างๆ ที่จะสอน
การใช้งาน MySQL และ PHP ควบคู่กันไป นอกจากนี้ หลายภาษาโปรแกรมที่สามารถทางานร่วมกับ
ฐานข้อมูล MySQL และรวมถึง ภาษาซี (C Language) ซีพลัสพลัส (C++) ซีชาร์ป (C#) ปาสคาล
(Pascal) ภาษาจาวา (Java Language) ภาษาเพิร์ล (Perl Language) พีเอชพี (PHP) ไพทอน (Python)
รูบี (Ruby) และภาษาอื่น ใช้งานผ่าน API สาหรับโปรแกรมที่ติดต่อผ่าน ODBC หรือ ส่วนเชื่อมต่อกับ
ภาษาอื่น (database connector) เช่น ASP สามารถเรียกใช้ MySQL ผ่านทาง MyODBC, ADO,
ADO.NET เป็นต้น
ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL