Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore ปิยะวดี พงษ์สวัสดิ์

ปิยะวดี พงษ์สวัสดิ์

Published by วิทย บริการ, 2022-07-05 03:22:19

Description: ปิยะวดี พงษ์สวัสดิ์

Search

Read the Text Version

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง บทท่ี 7 ตัวแปร Cookie และ Session ในบทท่ีผานมาเราจะสงขอมูลไปใหไฟลสคริปตเพียงอยางเดียว แตถาตองการแลกเปล่ียน ขอมูลระหวางผูใชงานกับเว็บเพจ เราสามารถใชสิ่งที่เรียกวา Session กับ Cookie มาชวยได ซ่ึงนั่น หมายถึงเราสามารถสงและรับขอมลู กบั เซิรฟเวอรได รจู กั และใชง าน Cookie เปนวิธีการท่ีเราฝงขอมูลขนาดเล็ก ๆ (ในรูปเท็กซไฟลขนาดไมเกิน 4 KB) ไวในเครื่องของ ผูใชงาน โดยขอมูลที่ฝงก็คือขอมูลที่แลกเปลี่ยนกัน สําหรับ Cookie แตละตัวจะมีลักษณะการเก็บ ขอ มูลทีป่ ระกอบดว ย 3 สว น ดงั น้ี - CookieName คอื ชอื่ Cookie - Value คอื คา ของขอ มูลท่ี cookie เกบ็ - ขอมูลประกอบอืน่ ๆ เชน เวลาหมดอาย,ุ ขอมูลเก่ียวกับ Host และ Path สําหรบั การทาํ งานของ Cookie มีรายละเอียด ดังนี้ 1. เมือ่ ผูใชง านเปด หนาเวบ็ ไซต เว็บเบราวเ ซอรจ ะรอ งขอไฟลเ วบ็ เพจไปที่ Server 2. Server จะสงหนาเว็บเพจกลับมาพรอมกับสงตัวแปร Cookie สําหรับเก็บขอมูล เขามา เก็บทเ่ี คร่อื งคอมพิวเตอรของผใู ชงาน 3. เมื่อผูใชมีการใชง านเวบ็ เพจ เชน กรอกขอมูลผา นฟอรม ก็จะมีการนําขอ มูลมาเกบ็ ไวใน Cookie 4. เม่อื Server ตอ งการขอ มูลจากผูใช Server จะไปอานจาก Cookie ท่ีอยูในเคร่ืองของผูใช นาํ ไปใชงาน สําหรับการใช Cookie เราอาจจะเคยสัมผัสโดยไมรูตัว เชน กรณีท่ีเราเขาไปใชเว็บไซตที่เรา เคยลงทะเบียนสมาชิกไว ทุกคร้ังทเี่ ราเขา ไปทีเ่ วบ็ ไซตนั้นตัวของเว็บไซตน้ันจะจดจําวาเคยเปนสมาชิก ซ่ึงอาจจะมีขอความทักทาย หรือปรับการแสดงผลบางอยางใหเหมาะกับเรา เชน มีการเลือกสินคา และบริการท่เี ราเคยส่งั ซื้อ หรือเคยเปด ดมู าแสดงใหเ ราเห็นเมอ่ื เขา มา เปนตน น่ันหมายความวาแมจะ ปด เว็บเพจไปแลว หาก Cookie ยังไมหมดอายุก็จะมีการเกบ็ ขอมูลนนั้ คา งไวทเ่ี ครือ่ งของผูใชงาน สําหรับการใชงาน Cookie เราจะมองเปนตัวแปรตัวหน่ึงก็ได โดยเราจะตองกําหนด รายละเอียดให Cookie โดยใชฟ งกช นั ช่อื วา setcookie ซึง่ มรี ายละเอยี ด ดังนี้ 129

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงรปู แบบการกําหนดรายละเอยี ดให Cookie setcookie (CookieName, Value, Timeout); สาํ หรบั รายละเอียดของพารามิเตอรในฟง กช ันมีดงั น้ี - CookieName คือ ชือ่ Cookie หรอื ชอ่ื ตวั แปรท่ีเราจะเก็บไวทเี่ ครื่องของผใู ช - Value คอื คา ทเี่ ราจะเกบ็ ไวใน Cookie - Timeout คอื เวลาท่ีเราจะให Cookie หมดอายนุ บั เปนวนิ าที ตัวอยา งที่ 7.1 การใชง าน Cookie สําหรับตัวอยางนี้เราจะสราง Cookie ข้ึนมาจากน้ันจะใหผูใชงานดูคา Cookie ที่สรางขึ้น, เปล่ียนแปลงคาใน Cookie และทําลาย Cookie ซ่ึงเราจะสราง Cookie ไวที่เครื่องของผูใชโดยสราง 4 ไฟล ดงั น้ี - ไฟล Cookiestart.php เพ่อื สรา งตวั แปร Cookie แลว สรา งลงิ กเพื่อตรวจสอบคา , เปลย่ี นแปลงคา และทําลาย Cookie - ไฟล Cookieview.php ใชต รวจสอบคา Cookie ท่ีไดส รา งขน้ึ (หรอื เปล่ียนแปลง คา ) หากยงั ไมห มดอายุใหแสดงคา ใหผ ูใชท ราบ - ไฟล Cookiemodify.php ใชเปลีย่ นแปลงคาท่ีเก็บใน Cookie - ไฟล Cookieclear.php ใชท ําลาย Cookie ทไี่ ดส รางขึน้ ไฟล cookiestart.php <?php $value=rand(0,9); setcookie(\"RunCookie\",$value,time()+60); echo \"Cookie ช่อื RunCookie ท่ีมคี า $value ไดถ ูกสง ไปยังเบราวเ ซอรแลว\"; ?> <br> <a href=\"cookieview.php\">ตรวจสอบคา ของ cookie</a><br> <a href=\"cookiemodify.php\">เปล่ยี นแปลงคา ของ cookie</a><br> <a href=\"cookieclear.php\">เคลียรคา ของ cookie</a><br> 1. กําหนดคา ของตัวแปร Cookie 2. สรา ง Cookie โดยสุมตัวเลขระหวาง 0 ถึง 9 ข้ึนมา และกําหนดเวลาหมดอายุการใชงาน เพ่ิมไปจากปจจบุ นั อีก 60 วินาที 130

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง 3. สรางลงิ กไปที่ไฟล cookieview.php เพ่ือตรวจสอบวา Cookie หมดอายุหรือไม ถายังไม หมดอายุใหแสดงคาของ Cookie 4. สรา งลิงกไปทไี่ ฟล cookiemodify.php เพือ่ เปล่ียนแปลงคา Cookie ใหม 5. สรางลิงกไปที่ไฟล cookieclear.php เพ่อื ทาํ ลาย Cookie ไฟล cookieview.php <?php if(isset($_COOKIE['RunCookie'])==true) { echo \"มีตัวแปร Cookie อย\"ู ; echo \"คาของตัวแปร cookie = \". $_COOKIE['RunCookie']; } else { echo \"ตัวแปร Cookie ถกู ลบไปแลว \"; } ?> 1. ใชคําส่ัง if ตรวจสอบรวมกับฟงกชัน isset ถาพบตัวแปร Cookie อยูใหแสดงขอความวา มีตวั แปร Cookie นัน้ อยู 2. ถา ไมพบตัวแปร Cookie ใหแ สดงขอความวาตัวแปร Cookie ถกู ลบไปแลว ไฟล cookiemodify.php <?php $ckname=\"RunCookie\"; $value=rand(0,9); setcookie($ckname,$value,time()+120); echo \"cookie ชื่อ $ckname ไดเ ปลย่ี นแปลงคาใหมเปน $value แลว \"; ?> 1. สราง Cookie ท่ีมีช่ือวา RunCookie โดยสุมตัวเลขระหวาง 0 ถึง 9 ข้ึนมา และ กําหนดเวลาหมดอายกุ ารใชงานเพม่ิ ไปจากปจจบุ ันอีก 2 นาที (120 วนิ าท)ี 2. แสดงขอ ความใหผ ูใชงานทราบถงึ การเปลย่ี นแปลง 131

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงไฟล cookieclear.php <?php setcookie(\"RunCookie\",FALSE); echo \"เคลียร Cookie เรียบรอยแลว\"; ?> 1. ทาํ ลาย Cookie โดยใชฟง กชนั setcookie โดยสวนที่เปน คา Cookie ใหก าํ หนดดว ยคา FALSE 2. แสดงขอความใหผใู ชงานทราบถงึ การทําลาย Cookie เราเรม่ิ ทดสอบการทาํ งานโดยเปด ไฟล cookiestart.php ไดผลลพั ธ ดังน้ี ภาพประกอบท่ี 7.1 ผลการทาํ งานของไฟล cookiestart.php ทม่ี า: (ภาพโดยผูเขยี น, 2564) เมอื่ คลิกลิงกต รวจสอบคา ของ cookie ไดผลลพั ธ ดงั น้ี ภาพประกอบที่ 7.2 ผลการตรวจสอบคา ของตัวแปร Cookie ที่มา: (ภาพโดยผเู ขียน, 2564) 132

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงคลิกท่ี เปล่ียนแปลงคา ของ cookie เพ่ือทดลองเปลี่ยนคา Cookie กอ นท่ีจะหมดอายุ ภาพประกอบที่ 7.3 ผลการเปล่ยี นแปลงคา ของตวั แปร Cookie ทีม่ า: (ภาพโดยผูเขยี น, 2564) คลิกท่ี เคลยี รคา cookie เพื่อทําลาย Cookie ที่สรา งข้นึ ภาพประกอบท่ี 7.4 ผลการเคลยี รคา cookie ท่ีมา: (ภาพโดยผูเขียน, 2564) รูจักและใชงาน Session เน่ืองจากการเก็บขอมูลของ Cookie ไวในเคร่ืองผูใชมากๆ ทําใหเวลาที่ Server ตองการ ขอ มูลจะดึงขอมูลไดชา เราจงึ มาเกบ็ ขอมูลไวใ นตัวแปรท่อี ยบู นเซริ ฟ เวอรท่เี รยี กวา Session แทน เนื่องจากการเก็บขอมูลดวย Session เปนการเก็บขอมูลบนเครื่อง Server ทําใหรวดเร็วตอ การใชงาน งายตอการคน หา และควบคุมจัดการโดยมหี ลกั การทาํ งาน ดังนี้ 1. เมอ่ื ผใู ชง านเปด หนาเว็บไซต เว็บเบราวเซอรจะรอ งขอไฟลเว็บเพจไปที่ Server 2. Server จะสง หนา เวบ็ เพจกลับมาพรอมกับตัวแปร Cookie ท่ีมี Session ID เขามาเก็บใน เครือ่ งของผใู ช 133

3. เมอื่ ผูใชกรอกขอมูลงในฟอรมรับขอมูลแลวสงขอมูล Server จะดึงขอมูลผูใชรวมท้ังจดจํา Session ID ของผูใ ชน ้นั ๆ ไปเกบ็ ที่ Server 4. เม่อื Server ตองการขอ มลู จะรอ งขอ Session ID จากเครือ่ งผใู ชม าเปนตวั ชีเ้ พอ่ื หาขอ มูล 5. ผูใชงานจะสง Session ID กลบั มาใหก บั Server 6. Server นํา Session ID มาเปน ตวั ช้ีเพ่ือหาขอ มูลผูใชท ีเ่ ก็บอยูใน Server จากการทํางานจะเหน็ วา ซบั ซอ นกวา Cookie แตม ขี อ ดีมากกวา โดยการใชงาน Session น้ัน Server จะจาย Session ID ใหกับเบราวเซอรของเครื่องผูใชงาน (ถาผูใชเปดเว็บเพจเดียวกันนี้ดวย เบราวเ ซอรอ ีกกจ็ ะไดร ับ Session ID ใหมอ ีก) ซ่งึ Session ไมมวี นั หมดอายุ จะหมดอายุก็เม่ือผูใชงาน ปดหนาตางเบราวเซอรเ ทา น้ัน และเนอื่ งจากการท่ี Server เปน ผูจายและควบคุม Session ผาน Session ID ทําใหสามารถ จัดการผูใชงานไดทันที จึงเหมาะกับการนําไปใชงานในเว็บแอปพลิเคชันที่ซับซอน เชน รานคา ออนไลน สามารถควบคุมติดตามการใชบริการเว็บไซตไดดี ที่สําคัญสามารถนําขอมูลที่เก็บใน Session นน้ั ไปใชงานในเวบ็ เพจใดๆ ก็ไดตราบเทา ที่ Session ยงั ไมห มดอายุ มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ฟงกชนั ทีใ่ ชงานกับตวั แปร Session Session มีคุณสมบตั ใิ ชสง คา ของตวั แปรทส่ี รางขนึ้ จากไฟลหน่ึงไปใชอีกไฟลหน่ึงได ซึ่งการใช งานตวั แปร Session มีฟง กชันเขามาเก่ยี วของหลายตัว ดงั น้ี • session_start() ใชกําหนดใหข อ มลู ของ Session เริม่ ตน ทาํ งาน • session_destroy() ใชสําหรบั ทําลายขอมูลทั้งหมดของ Session ฟงกช นั session_start() ฟงกชันน้ีใชกําหนดใหขอมูลของ Session เริ่มตนทํางาน ตัวอยางตอไปน้ีจะใชฟงกชัน session_start() เพื่อกําหนดใหโปรแกรมเริ่มตนเก็บคาของตัวแปร Session ท่ีไฟล page1.php หลงั จากน้ันทาํ การเรยี กใชไ ฟล page2.php ขน้ึ มาแลว ทาํ การแสดงคาตวั แปร Session ดงั กลา ว ไฟล page1.php <?php 134 session_start(); echo \"ยนิ ดีตอนรบั สู page1 <br>\"; $_SESSION['color'] =\"RED\"; $_SESSION['animal'] =\"cat\"; $_SESSION['time']= time(); echo\"<a href=\\\"page2.php\\\">page2</a>\"; ?>

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงผลลัพธการทํางาน ดงั น้ี ภาพประกอบที่ 7.5 ผลลัพธการทาํ งานของไฟล page1.php ทม่ี า: (ภาพโดยผูเขยี น, 2564) ไฟล page2.php <?php session_start(); echo \"ยนิ ดตี อนรับสู page2 <br>\"; echo $_SESSION['color'] .\"<br>\"; echo $_SESSION['animal']. \"<br>\"; echo date('Y m d H:i:s',$_SESSION['time']) \"<br>\"; echo\"<a href=\\\"sessionDestroy.php\\\">ทาํ ลาย Session</a>\"; ?> ผลลัพธการทํางาน ดงั น้ี ภาพประกอบที่ 7.6 ผลลัพธการทํางานของไฟล page2.php ทม่ี า: (ภาพโดยผเู ขียน, 2564) 135

จากผลลัพธการทํางานเม่ือเรียก page1.php ทํางานแลว จะมีการกําหนดคาของตัวแปร $_SESSION ซ่ึงเปน ตวั แปรเฉพาะของ Session โดยเปนตัวแปรประเภทอารเรย ในที่นี้กําหนดใหเก็บ คาของส,ี ประเภทสัตว และวนั เวลาปจจบุ นั ของเคร่ือง หลังจากนั้นเมื่อทําการคลิกที่ลิงก page2.php กจ็ ะไปที่ page2.php พรอ มแสดงคาในตัวแปร Session ออกมาท้ัง 3 คา (อนรรฆนงค คุณมณ,ี 2555) มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ฟง กชัน session_destroy() ฟงกชันนี้ใชสําหรับทําลายขอมูลทั้งหมดของ Session ต า ง จ า ก ฟ ง ก ชั น session_unregister() ที่ตองระบุช่ือตัวแปรท่ีตองการยกเลิก ถาตัวแปรไหนไมถูกยกเลิกการ ลงทะเบียนก็ยังเก็บไวอยู ทดสอบการทํางานของฟงกชันนี้โดยสรางไฟลท่ีจะทําลายตัวแปร Session ทีถ่ ูกสรา งจากไฟล page1.php ดงั น้ี ไฟล sessionDestroy.php <?php session_start(); echo \"ยกเลิกการลงทะเบยี นท้งั หมดของ Session <br>\"; session_destroy(); echo\"<a href=\\\"page2.php\\\">page2</a>\"; ?> ทดสอบโดยเรียกใชงานไฟล page1.php และ page2.php หลังจากน้ันใหกดลิงก ทําลาย Session ที่ไฟล page2.php ท่ีเชื่อมโยงไปที่ไฟล sessionDestroy.php เพื่อยกเลิกการลงทะเบียน ทั้งหมดของ Session แลวคลิกลิงกกลับไปที่ไฟล page2.php อีกคร้ัง จะสังเกตเห็นวาตัวแปร Session ถูกทาํ ลายคาท่ีเกบ็ ไปแลว ผลลพั ธก ารทาํ งาน ดงั น้ี เรียกใชงานไฟล page1.php ภาพประกอบท่ี 7.7 การเรียกใชง านไฟล page1.php ท่ีมา: (ภาพโดยผูเ ขียน, 2564) 136

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงเรยี กใชงานไฟล page2.php จากการกดลิงก page2 ที่ไฟล page1.php ภาพประกอบท่ี 7.8 การเรียกใชง านไฟล page2.php ทมี่ า: (ภาพโดยผเู ขยี น, 2564) เรยี กใชงานไฟล sessionDestroy.php จากการกดลิงก ทาํ ลาย Session ทไี่ ฟล page2.php ภาพประกอบท่ี 7.9 การเรียกใชงานไฟล sessionDestroy.php ท่มี า: (ภาพโดยผเู ขยี น, 2564) เรียกใชงานไฟล page2.php อกี ครัง้ จากการกดลิงก page2 ท่ไี ฟล sessionDestroy.php 137

ภาพประกอบท่ี 7.10 การเรียกใชงานไฟล page2.phpมหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงอี ก ค รั้ ง ห ลั ง ใ ช ฟ ง ก ชั น session_destroy() ทมี่ า: (ภาพโดยผเู ขยี น, 2564) พบวา ตวั แปร Session ถกู ทําลายไปแลว จึงแจง error ดงั ภาพดา นบน (ชาญชัย ศภุ อรรถกร, 2561) บทสรปุ บทนี้เราไดเรียนรูเกี่ยวกับ Cookie และ Session ซึ่งเปนกลไกสําคัญอีกประการหนึ่งในการ เก็บขอมูลผูใชโดยเชื่อมตอขอมูลระหวางเซิรฟเวอร และเครื่องของผูใช ทําใหตรวจสอบไดวาผูใชงาน กําลังใชงานอยูในหนาใดบาง หรือนําไปประยุกตใชในการสั่งซ้ือสินคาของลูกคาในการสรางระบบ ตะกรา สนิ คาก็ได คาํ ถามทบทวน 1. Cookie คืออะไร มีความสําคญั อยางไร 2. Session คอื อะไร มีความสําคัญอยางไร 3. จงอธบิ ายรปู แบบการกาํ หนดรายละเอียดใหกบั Cookie 4. Timeout ใน Cookie คืออะไร 5. จงอธบิ ายความแตกตางระหวาง Cookie และ Session วาเหมอื นหรือแตกตางกันอยางไร 6. ฟง กช ันที่ใชงานกบั ตวั แปร Session มอี ะไรบา ง จงอธบิ ายวิธกี ารใชงาน 7. การใชงาน Session ตอ งประกาศฟง กช ันอะไรเปนอนั ดับแรกเสมอ เพราะอะไร 8. $_SESSION คืออะไร 9. $_COOKIE คอื อะไร 138

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง10. จงยกตัวอยา งเหตุการณการใชง านเว็บไซตท ีน่ ักศึกษาคิดวา เกิดจากการทํางานของ Cookie หรือ Session เอกสารอา งอิง อนรรฆนงค คุณมณ.ี (2555). พัฒนาเว็บ App แบบมืออาชีพดวย PHP+AJAX และ jQuery. นนททบรุ ี : ไอซีด.ี ชาญชัย ศุภอรรถกร. (2561). สรา งเว็บแอพพลเิ คชัน PHPMySQL สาํ หรับผเู ร่มิ ตน . พมิ พครง้ั ที่ 2. กรงุ เทพฯ : รีไววา . 139

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง แผนบริหารการสอนประจําบทท่ี 8 หวั ขอเนื้อหา 1. ทําความรูจักกับฐานขอ มลู MySQL 2. การใชง าน MySQL 3. คําสงั่ SQL 4. คาํ ส่งั แสดงรายชอื่ ฐานขอ มูล 5. คําสง่ั เลือกใชฐ านขอมลู 6. คําสั่งแสดงรายช่ือตาราง 7. คําสั่งแสดงรายละเอียดของฟลด 8. คาํ สง่ั สรา งฐานขอ มลู 9. คําส่งั สรางตาราง 10. คาํ สง่ั เพมิ่ ขอมลู เรคอรดใหม 11. คําสัง่ ดึงขอมลู จากตาราง 12. คาํ สง่ั แกไ ขขอ มูลในตาราง 13. คําสง่ั ลบเรคอรด ในตาราง 14. คําสั่งออกจาก MySQL 15. phpMyAdmin 16. การใช phpMyAdmin ชว ยในงาน MySQL 17. การสรา งและลบฐานขอมูล 18. การสรา งตาราง 19. การแกไ ขรายละเอยี ดของตาราง 20. การเพิม่ เรคอรดใหมใ นตาราง 21. การดูขอมูลภายในตาราง 22. การแกไ ขขอ มลู ของเรคอรด 23. การลบเรคอรด 24. การลบตาราง 25. การสงออกฐานขอมลู 26. การนําเขา ฐานขอ มูล 140

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงวัตถปุ ระสงคเชงิ พฤติกรรม เม่อื นกั ศึกษาเรียนจบบทเรยี นนี้แลว สามารถ 1. อธบิ ายความหมายเกีย่ วกบั ฐานขอมลู MySQL, SQL และ phpMyAdmin ได 2. อธบิ ายวธิ ีการเพิม่ ขอมูลดว ยคาํ สั่ง INSERT INTO ได 3. อธบิ ายวธิ กี ารดงึ ขอมูลดวยคําสั่ง SELECT ได 4. อธิบายวธิ กี ารแกไขขอ มูลดว ยคําสง่ั UPDATE ได 5. อธบิ ายวธิ กี ารลบขอมูลดวยคาํ สง่ั DELETE ได 6. สามารถบอกขน้ั ตอนการใช phpMyAdmin ชว ยในงาน MySQL ได 7. สามารถใชง าน phpMyAdmin ในการจัดการฐานขอ มลู ได วิธสี อนและกิจกรรมการเรยี นการสอน 1. วิธีสอน 1.1 วิธีการสอนแบบบรรยาย โดยใหนักศึกษาฟง บรรยายจากเอกสารประกอบการสอน วิชา การพัฒนาฐานขอมลู บนเวบ็ 1.2 อภปิ รายรวมกนั ในชั้นเรยี น 2. กจิ กรรมการเรยี นการสอน 2.1 คาํ ถามทบทวน 2.2 แบบฝกปฏิบัติ เรอ่ื ง การใชงาน MySQL ดว ย phpMyAdmin 2.3 Active Learning แบบ PLC สอื่ การเรยี นการสอน 1. เอกสารประกอบการสอน วิชา การพัฒนาฐานขอมลู บนเว็บ 2. เวบ็ ไซตทม่ี เี นื้อหาเกย่ี วของกับรายวชิ า 3. ส่ือสงั คมออนไลน การวัดผลและการประเมนิ ผล 1. สังเกตการณมสี วนรว มและการถาม-ตอบ 2. การทํางานตามท่ีไดร บั มอบหมาย 3. การทําคาํ ถามทบทวน 4. การทําแบบฝกปฏบิ ัติ เรอ่ื ง การใชง าน MySQL ดว ย phpMyAdmin 141

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง บทที่ 8 ฐานขอมูล MySQL และการใชง าน phpMyAdmin ระบบฐานขอมูลมีไวสําหรับเก็บขอมูลหลากหลายรูปแบบ ซ่ึงภายในแตละฐานขอมูลมีขอมูล สําคัญมากมาย ในการสรางเว็บไซตมีขอมูลมากมายที่รับเขามาจากฟอรมหรือกลองรับขอมูลรูปแบบ ตางๆ และตองนําขอมูลเหลานั้นมาเก็บไวทในระบบฐานขอมูล เชน ฐานขอมูลรายละเอียดสินคา, ฐานขอมูลผูสมัครเขา ใชงานระบบ หรอื ฐานขอ มลู คาํ ถาม-คําตอบในเวบ็ บอรด เปน ตน ทําความรจู ักกับฐานขอ มลู MySQL ฐานขอมูล MySQL เปนโปรแกรมฐานขอมูลที่รองรับระบบฐานขอมูลภาษา SQL ซ่ึงเปน ภาษาที่ใชสรางฐานขอมูลท่ีเขาใจงาย เหมาะสําหรับองคกร หรือบุคคลทั่วไปท่ีมีความตองการใช ฐานขอมูลขนาดเล็ก และปานกลาง อีกท้ังเปนซอฟตแวรฟรี และรองรับทั้งระบบปฏิบัติการ Windows และ Linux จงึ มผี นู ยิ มใชงานกันอยางกวา งขวาง การใชง าน MySQL ในการใชง านและทดสอบ MySQL มหี ลายวธิ ซี ่งึ ท่สี ะดวกกับผูพัฒนาในรายวิชานี้จะใชวิธีการ ทดสอบคาํ ส่งั ผา นโปรแกรม phpMyAdmin ซึ่งมีอยูแลวในโปรแกรม XAMPP ท่ีติดตั้งในบทท่ี 2 การ ทดสอบคาํ ส่งั ทําไดโ ดยขน้ั ตอน ดังนี้ 1. การเขาไปที่หนาหลักของโปรแกรม XAMPP โดยเปดเบราวเซอรข้ึนมาท่ีชอง URL พิมพ localhost หรอื http://127.0.0.1 2. คลกิ ที่ phpMyAdmin 3. คลิกเลือกเมนู SQL จะปรากฏชองวางสําหรับใสรหัสคําสั่ง SQL ซ่ึงหลังจากพิมพคําสั่ง แลว ตองการทดสอบใหค ลกิ ท่ีปมุ Go ภาพประกอบที่ 8.1 การใชง าน MySQL ผา นโปรแกรม phpMyAdmin ที่มา: (ภาพโดยผเู ขียน, 2564) 142

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงคาํ สั่ง SQL คําส่ัง SQL คือ คําส่ังที่ใชในการบริหารจัดการฐานขอมูล (Database) ในการใชงาน ฐานขอมลู MySQL จึงจาํ เปน ตองรูจักคาํ สั่ง SQL พื้นฐานเพือ่ เขาไปจัดการกับฐานขอมูล ดังนี้ คาํ สง่ั แสดงรายชือ่ ฐานขอ มลู รปู แบบ Show Databases; ผลลัพธการทาํ งาน ดงั นี้ ภาพประกอบที่ 8.2 ผลการใชค าํ สั่งแสดงรายชอื่ ฐานขอ มูล ท่ีมา: (ภาพโดยผเู ขยี น, 2564) คําสง่ั เลอื กใชฐานขอ มลู รูปแบบ Use ชือ่ ฐานขอ มูล; ผลลพั ธการทํางาน ดงั น้ี ภาพประกอบท่ี 8.3 ผลการใชค ําส่ังเลอื กใชฐานขอ มลู ทม่ี า: (ภาพโดยผูเขยี น, 2564) 143

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง จากตัวอยางเราไดเ ลือกฐานขอมูลช่ือ register เพื่อท่ีจะเขาไปใชงาน ผลลัพธคือโปรแกรมได เลอื กฐานขอ มูลดังกลา วเรยี บรอ ยแลว จากคําสัง่ use register; คําสั่งแสดงรายช่อื ตาราง รูปแบบ Show tables; ผลลพั ธการทาํ งาน ดงั น้ี ภาพประกอบที่ 8.4 ผลการใชคาํ ส่งั แสดงรายช่ือตาราง ทมี่ า: (ภาพโดยผูเ ขียน, 2564) จากตวั อยางเราไดใชคําส่ังขอดูช่ือตารางในฐานขอมูล register ผลลัพธคือโปรแกรมไดแสดง รายชื่อตารางท่ีอยูในฐานขอมูล register ซึ่งมีจํานวน 1 ตาราง คือ ตาราง member จากคําส่ัง Show tables; คําส่งั แสดงรายละเอยี ดของฟล ด รปู แบบ Show columns from ชื่อตาราง; 144

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงผลลัพธก ารทาํ งาน ดงั นี้ ภาพประกอบท่ี 8.5 ผลการใชค ําสัง่ แสดงรายละเอียดของฟลด ท่มี า: (ภาพโดยผเู ขียน, 2564) จากตัวอยางเราไดใชคําส่ัง Show columns from member; เพื่อขอดูรายละเอียดฟลด ตา งๆ ในตาราง member ซง่ึ มที ้ังหมด 9 ฟล ด คําส่งั สรางฐานขอมูล รูปแบบ Create database ชือ่ ฐานขอ มลู ; ผลลพั ธการทาํ งาน ดงั น้ี ภาพประกอบที่ 8.6 ผลการใชคําสัง่ สรา งฐานขอ มูล ท่ีมา: (ภาพโดยผูเขียน, 2564) 145

จากตัวอยางเราไดใชคําส่ัง Create DATABASE testdata; เพ่ือสรางฐานขอมูลใหมช่ือ testdata คําสง่ั สรา งตาราง รปู แบบ Create table ชื่อตาราง (รายละเอียดตา งๆ ของตาราง); มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง สมมติวาในฐานขอ มลู testdata เราตอ งการสรา งตาราง customer โดยมีรายละเอยี ดดงั นี้ ตารางที่ 8.1 รายละเอยี ด ตาราง customer ช่อื ฟลด ชนดิ ขอ มูล ความยาว คําปริยาย คยี  id int 4 0 Primary key name varchar 20 ไมกาํ หนด - address Varchar 50 Bangkok - ดังนั้นเราสามารถเขียนคาํ ส่งั เพื่อสรางตารางไดด ังน้ี Create table customer (id int(4), name varchar(20), address varchar(50) default 'Bangkok' not null, primary key(id)); ผลลัพธก ารทํางาน ดงั นี้ ภาพประกอบท่ี 8.7 ผลการใชคาํ ส่ังสรางตาราง ทมี่ า: (ภาพโดยผูเ ขยี น, 2564) 146

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง จากตัวอยางเราไดใชคําสั่งดังกลาวทําใหไดตาราง customer ที่มีรายละเอียดตามท่ีกําหนด ขางตนสามารถดูผลลัพธไดโดยการคลิกท่ีชื่อตาราง customer จากเมนูทางดานซาย แลวคลิกท่ี Structure เพ่ือดรู ายละเอยี ดของตาราง คําส่งั เพ่ิมขอ มูลเรคอรด ใหม รปู แบบ insert into ชอ่ื ตาราง(ชอ่ื ฟลด1 , ช่ือฟลด2 , ...) values (คา ของฟล ด1 , คา ของฟลด2, ...); สมมติตอ งการเพมิ่ เรคอรด ใหมล งในตาราง customer ซึ่งมรี ายละเอยี ด ดงั นี้ id : 1 name : Piya address : Ratchaburi ดงั นนั้ เราสามารถเขยี นคาํ สง่ั เพมิ่ ขอ มูลเรคอรด ใหมได ดงั น้ี insert into customer (id, name, address) values (1, 'Piya', 'Ratchaburi'); ผลลัพธการทํางาน ดังน้ี ภาพประกอบที่ 8.8 ผลการใชค ําส่ังเพ่ิมขอ มูลเรคอรดใหม ทม่ี า: (ภาพโดยผูเขยี น, 2564) จากตัวอยางเราไดใชคําสั่งดังกลาวทําการเพิ่มขอมูลเรคอรดใหมลงในตาราง customer ซ่ึง สามารถดูผลลัพธไดโดยการคลิกที่ชื่อตาราง customer จากเมนูทางดานซาย แลวคลิกที่ Browse เพื่อดขู อ มลู เรคอรด ในตาราง 147

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงคําสัง่ ดึงขอมูลจากตาราง รูปแบบ select ชือ่ ฟล ด1 , ชอื่ ฟลด2 , ... from ชือ่ ตาราง [where เงือ่ นไข] ; จากหัวขอที่ผานมาไดมีการเพ่ิมขอมูลเรคอรดลงในตาราง เราจะพิสูจนวามีการเพิ่มขอมูลลง ไปในตารางจรงิ หรือไมโดยใชคําสั่งดึงขอมลู จากตารางมาแสดง โดยใชคําส่ัง ดังนี้ select id, name, address from customer ; ผลลัพธการทาํ งาน ดงั นี้ ภาพประกอบท่ี 8.9 ผลการใชคาํ สั่งดงึ ขอ มูลจากตาราง ท่ีมา: (ภาพโดยผูเขยี น, 2564) จากตัวอยางขางตนเราไดใชคําส่ังดึงขอมูลจากตาราง customer แบบไมมีเง่ือนไข คือจะ แสดงทุกเรคอรดท้ังหมดที่อยูในตาราง แตในบางครั้งเราอาจตองการขอมูลเพียงบางเรคอรดเทานั้น เชน ตองการขอ มูลของลูกคาท่อี ยใู นจังหวดั ราชบรุ ีเทา นน้ั เราสามารถเขียนคําสง่ั ได ดังน้ี select id, name, address from customer where address = 'Ratchaburi' ; สมมติวามกี ารเพม่ิ ขอมูลเรคอรดเขา ไปใหม 2 เรคอรด ดงั น้ี id : 2 , name : Somsak , address : Nakhon Pathom id : 3 , name : Krit , address : Phetchaburi แลวใชคาํ สั่งดึงขอมลู จากตารางแบบกําหนดเงอื่ นไขเฉพาะลกู คา ที่อยใู นจังหวัดราชบุรี 148

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงผลลพั ธการทาํ งาน ดงั นี้ หลังจากการเพม่ิ ขอ มูลเรคอรด เขา ไปใหม 2 เรคอรด ภาพประกอบท่ี 8.10 ผลการเพม่ิ ขอมูลเรคอรด ท่มี า: (ภาพโดยผูเ ขยี น, 2564) แลวใชค ําสัง่ ดึงขอ มลู จากตารางแบบกําหนดเงื่อนไขเฉพาะลกู คาที่อยูใ นจังหวดั ราชบรุ ี ภาพประกอบที่ 8.11 ผลการใชค ําสง่ั ดงึ ขอมูลเพียงบางเรคอรด ท่ีมา: (ภาพโดยผเู ขียน, 2564) คําสั่งแกไขขอมลู ในตาราง รปู แบบ update ชอื่ ตาราง set ชอ่ื ฟลด1 = คาทีแ่ กไข, ชือ่ ฟล ด2 = คา ที่แกไ ข, ... where เงื่อนไข ; 149

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง สมมติวาตองการแกไขที่อยูของลูกคา id = 3 จาก Phetchaburi เปน Lopburi จะสามารถ เขียนคาํ ส่งั ได ดังน้ี update customer set address = 'Lopburi' where id = 3 ; ผลลพั ธก ารทาํ งาน ดงั นี้ ภาพประกอบท่ี 8.12 ผลการใชคําสัง่ แกไ ขขอมูลในตาราง ทีม่ า: (ภาพโดยผเู ขียน, 2564) คําสั่งลบเรคอรดในตาราง รปู แบบ delete from ชอ่ื ตาราง where เง่ือนไข ; สมมตวิ าตองการลบขอ มูลของลูกคา id = 3 สามารถเขยี นคาํ สั่งได ดงั น้ี delete from customer where id = 3 ; ผลลัพธก ารทํางาน ดงั น้ี จากตัวอยางขางตนเราไดใชคําสั่งลบขอมูลของลูกคา id = 3 จะปรากฎหนาตางขึ้นมาเพื่อ ยืนยนั การลบ หากตองการลบใหก ดที่ “OK” หากไมตอ งการลบใหก ดที่ “Cancel” 150

ภาพประกอบท่ี 8.13 แสดงหนาตางเพ่ือยืนยนั การลบมหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ท่มี า: (ภาพโดยผเู ขียน, 2564) หากกดที่ “OK”เพื่อลบขอมลู เรคอรดของลูกคา id = 3 ขอ มลู กจ็ ะหายไปดงั ภาพ ภาพประกอบท่ี 8.14 ผลการใชค าํ สง่ั ลบเรคอรด ในตาราง ที่มา: (ภาพโดยผเู ขียน, 2564) คําสั่งออกจาก MySQL รปู แบบ Exit ; คําสงั่ นี้ใชใ นกรณที ี่ตอ งการออกจากฐานขอมูล MySQL ดังน้ันหลังจากเรียกใชคําส่ังนี้แลวจะ ออกจากฐานขอมลู ไปอยูท ร่ี ะบบปฎบิ ัติการหรือโปรแกรมบนเคร่ืองปกติ (ชาญชัย ศภุ อรรถกร, 2560) 151

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงphpMyAdmin เน่ืองจากการใชงาน MySQL แตเดิมตองพิมพคําสั่งทีละบรรทัด จึงมีผูพัฒนาแอปพลิเคชัน ใหมที่ชวยในการจัดการระบบฐานขอมูลใหสะดวกข้ึนซึ่งก็คือ phpMyAdmin โดยมียูสเซอร อินเตอรเฟสเปน กราฟก ทาํ ใหผ ูใ ชสามารถใชงานไดอยางสะดวกรวดเร็ว ไมตองพิมพคําสั่งทีละบรรทัด อีกตอ ไป หรอื ถาคนุ เคยกับการพิมพค ําส่งั แบบเดมิ ก็สามารถเลือกพิมพค ําสั่งเองได ภาพประกอบท่ี 8.15 phpMyAdmin (ภาพไอคอน) ทีม่ า : https://www.stickpng.com/img/icons-logos-emojis/iconic-brands/phpmyadmin- logo การใช phpMyAdmin ชวยในงาน MySQL เม่ือติดตั้ง xampp เรียบรอยแลว (กลาวไวในบทที่ 1) ตอจากนี้เราจะมาเริ่มเปดใชงาน phpMyAdmin กนั โดยมีขั้นตอน ดังน้ี 1. เปดเบราวเ ซอรข น้ึ มาท่ชี อ ง URL พิมพ localhost หรือ http://127.0.0.1 2. คลกิ ที่ phpMyAdmin ภาพประกอบที่ 8.16 การเขาใชง าน phpMyAdmin ทีม่ า: (ภาพโดยผเู ขียน, 2564) 152

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงการสรางและลบฐานขอมูล ขน้ั ตอนแรกของการนําขอมลู เขามาเก็บไวใ นฐานขอมลู ดวย phpMyAdmin เราจะตองสราง ฐานขอมูลกอน ซ่งึ มขี น้ั ตอน ดังนี้ 1. คลิกที่แท็บเมนู Databases หรอื คลิกที่ 2. หวั ขอ Create database ทช่ี อ ง Database Name ใหพ มิ พช่อื ฐานขอ มูล 3. กําหนดรูปแบบการจัดเรียง (Collation) ต้ังคารหัสอักขระท่ีใชติดตอฐานขอมูล เปน utf8mb4_unicode_ci หรอื utf8_unicode_ci เพ่ือใหจ ัดเก็บขอ มลู เปน ภาษาไทยไดอยางถกู ตอง 4. คลกิ ที่ปุม Create ภาพประกอบท่ี 8.17 ขั้นตอนการสรางฐานขอมลู ผานทาง phpMyAdmin ทม่ี า: (ภาพโดยผเู ขียน, 2564) ในท่ีนี้สรางฐานขอมูลช่อื register จะแสดงผลการสรางฐานขอ มูลใน phpMyAdmin ดงั นี้ ภาพประกอบท่ี 8.18 ผลการสรา งฐานขอ มลู ผา นทาง phpMyAdmin ทม่ี า: (ภาพโดยผูเ ขยี น, 2564) 153

หากตองการลบฐานขอมูลทําไดโดยการคลิกเลือกฐานขอมูลที่ตองการลบจากพื้นที่ทาง ดา นซาย คลิกลิงก Operations จากเนวิเกชันบาร แลว ไปที่หัวขอ Remove database แลวคลิกลิงก Drop the database (DROP) จะปรากฏหนาตางข้ึนมาถามเพื่อยืนยันการลบ ถาตองการลบใหคลิก ท่ี “OK” แตถ า ไมต อ งการลบใหคลกิ ท่ี “Cancel” (อนรรฆนงค คุณมณี, 2555) การสรางตาราง ในการสรางตารางเก็บขอมูล สิ่งแรกที่ควรรูคือจํานวนฟลดขอมูลในตาราง ฟลดขอมูล หมายถงึ ช่ือกลมุ ของขอมูลท่ีเราจะเก็บ เชน [email protected], [email protected] ช่ือของกลุมขอมูลนี้ก็คือ อีเมล คือฟลดอีเมลนั่นเอง คุณตองรูวาในตารางท่ีจะสรางน้ีมีก่ีฟลด แตหาก คุณนับจํานวนฟลดไ มถกู ตอ งอาจเพ่ิมหรือลบฟลดในภายหลงั ได การสรา งตารางมีข้ันตอน (ชาญชยั ศุภอรรถกร, 2561) ดงั น้ี 1. หวั ขอ Create table ทชี่ อ ง Name ให พิมพชื่อตาราง 2. ทีช่ อง Number of columns ให พิมพจาํ นวนฟลด 3. คลิกทปี่ มุ Go มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ภาพประกอบที่ 8.19 ขั้นตอนการสรางตาราง ผา นทาง phpMyAdmin ที่มา: (ภาพโดยผูเขยี น, 2564) 4. จะปรากฎหนาตา งใหก ําหนดรายละเอยี ดของตาราง ดงั น้ี - Name ใชสาํ หรบั พมิ พช ื่อฟล ด - Type ใชส าํ หรบั กาํ หนดชนดิ ของขอมลู ที่ใชใ นฟล ด - Length/Values ใชส าํ หรบั กาํ หนดความยาวของฟล ด - Default ใชส าํ หรบั กาํ หนดคาของฟลดในกรณีที่ไมไดม ีการกรอก 154

ขอมูลใดๆ - Attributes ใชส าํ หรับกําหนดลักษณะของฟลด - Collation ใชสาํ หรับการกําหนดการเรียงลําดบั ของขอมลู ในตาราง - Null ใชส าํ หรับกําหนดวา ฟล ดน น้ั ๆ จะใหม ีคา วา งเปลา ได หรือไม มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง - Index ใชสําหรบั กําหนดใหฟ ล ดนนั้ เปนคยี ห ลัก (Primary Key) - A_I ใชสาํ หรบั กาํ หนดใหฟลดนน้ั มีลกั ษณะแบบ auto_increment จากรายการขอ มลู เราไมจําเปนตองกรอกขอมูลใหครบทุกรายการก็ได เชน สมมติวาตองการ สรา ง ตาราง member มรี ายละเอยี ด ดังน้ี ตารางที่ 8.2 รายละเอียดของตาราง member ช่อื ฟล ด ชนดิ ขอ มูล ความยาว อ่นื ๆ idMem INT 4 เปน คียห ลัก และมลี กั ษณะเปน auto_increment username VARCHAR 10 password VARCHAR 10 name VARCHAR 20 address VARCHAR 30 sex VARCHAR 5 age INT 5 hobby VARCHAR 5 data VARCHAR 5 ดงั นัน้ เราสามารถกําหนดรายละเอยี ดของตาราง member นด้ี ว ยโปรแกรม phpMyAdmin ไดดงั นี้ 155

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงภาพประกอบท่ี 8.20 การกาํ หนดรายละเอียดของตาราง ผานทาง phpMyAdmin ทม่ี า: (ภาพโดยผูเขยี น, 2564) หลงั จากกาํ หนดรายละเอียดตางๆของตารางครบแลว ใหท าํ การคลกิ ท่ีปุม Save โปรแกรมจะ สรางตารางขึ้นมาเกบ็ ไวในฐานขอมูล เราสามารถดูรายละเอียดของตารางไดโ ดยการคลิกท่ี Structure ดานหลงั ตารางทต่ี อ งการ ภาพประกอบที่ 8.21 การดโู ครงสรา งตาราง ผานทางเมนู Structure ที่มา: (ภาพโดยผเู ขยี น, 2564) รายละเอยี ดของตาราง 156

ภาพประกอบที่ 8.22 โครงสรา งตาราง ทมี่ า: (ภาพโดยผูเ ขียน, 2564) มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ก า ร แ ก ไ ข ร า ย ล ะ เ อี ย ด ข อ ง ตาราง จากรูปรายละเอียดของตาราง เราสามารถทําการแกไขรายละเอียดของตารางไดโดยคลิกท่ี Check box หนาช่ือฟลดทต่ี องการแกไ ข หรอื ลบออก โดยใหเ ลอื กฟล ดท่ตี องการ และคลิกที่ไอคอน ถาตอ งการแกไข หรอื คลกิ ท่ไี อคอน ถาตองการลบฟล ดนน้ั ออกจากตาราง ยกตัวอยางการแกไขความยาวของฟลด name, address, sex, age, hobby, data เปน 25, 35, 10 , varchar(10), 10, 10 ตามลําดบั ขั้นตอน ดังน้ี 1. เลือกฟล ดท ีต่ อ งการแกไ ขแลวกด ภาพประกอบท่ี 8.23 ขน้ั ตอนการเลอื กฟล ดที่ตอ งการแกไข ท่มี า: (ภาพโดยผเู ขยี น, 2564) 2. ทําการแกไขขอ มูลแลวกด Save 157

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงภาพประกอบที่ 8.24 ข้นั ตอนการแกไขฟล ด ทีม่ า: (ภาพโดยผเู ขียน, 2564) 3. ผลลพั ธการแกไข ภาพประกอบท่ี 8.25 ผลการแกไ ขฟลด ที่มา: (ภาพโดยผเู ขียน, 2564) การเพม่ิ เรคอรดใหมใ นตาราง มีข้นั ตอน ดังนี้ 1. คลกิ ท่ีช่ือฐานขอ มูล register จากเมนูทางดานซายของโปรแกรม จะปรากฎรายช่ือตาราง ท้งั หมดทอี่ ยูในฐานขอ มลู นนั้ 2. คลิกท่ีลิงก ดานหลังช่อื ตาราง member 158

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ภาพประกอบท่ี 8.26 ขน้ั ตอนการเพิ่มเรคอรด ผานทางลิงก insert ทม่ี า: (ภาพโดยผเู ขียน, 2564) 3. จะปรากฏหนา จอสําหรบั การเพิ่มเรคอรด ใหมในตาราง ดงั น้ี ภาพประกอบท่ี 8.27 การกรอกขอมูลท่ีตอ งการเพิ่ม ทมี่ า: (ภาพโดยผเู ขยี น, 2564) 4. ที่คอลัมน Value ใหกรอกรายละเอียดลงไปในแตละชอง Text Box ในที่นี้ทดลองใสคา ดังนี้ idMem : 1 , username : gib1234 , password : 1234 , name : piya , addess : 234 ม.6 , sex : หญิง , age : 26-45 , hobby : ดหู นัง, data : หนงั สอื หลงั จากนัน้ คลิกปุม Go จะไดผ ลลัพธ ดังน้ี 159

ภาพประกอบท่ี 8.28 ผลการเพ่มิ เรคอรดใหมใ นตาราง ผานทาง phpMyAdmin ทีม่ า: (ภาพโดยผูเขยี น, 2564) มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง การดขู อมลู ภายในตาราง ดา นหลงั ตาราง member มขี ัน้ ตอน ดังนี้ 1. คลิกที่ลิงก ภาพประกอบท่ี 8.29 การดูขอ มูลภายในตาราง ผา นทางลงิ ก Browse ที่มา: (ภาพโดยผเู ขยี น, 2564) 2. จะปรากฏหนา จอแสดงเรคอรด ทง้ั หมดท่มี อี ยูใ นตาราง ดังนี้ ภาพประกอบที่ 8.30 แสดงเรคอรด ทง้ั หมดทมี่ ีอยูในตาราง ของเรคอรด ที่ตอ งการ ท่ีมา: (ภาพโดยผเู ขยี น, 2564) การแกไขขอ มลู ของเรคอรด มีข้นั ตอน ดังน้ี 1. บริเวณดานหนา ของแตล ะเรคอรดใหคลิกที่ไอคอน 160

ภาพประกอบที่ 8.31 การแกไ ขขอ มลู ของเรคอรด ผานทางลิงก Edit ทมี่ า: (ภาพโดยผเู ขยี น, 2564) 2. ทาํ การแกไขขอ มูลแลวคลิกท่ปี มุ Go มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ภาพประกอบท่ี 8.32 การแกไขขอมลู ของเรคอรด ท่ีมา: (ภาพโดยผูเขยี น, 2564) การลบเรคอรด หากตองการลบเรคอรดที่ไมต อ งการทิง้ ไป ใหทาํ ตามขนั้ ตอน ดังน้ี 1. บรเิ วณดานหนา ของแตล ะเรคอรด ใหค ลกิ ท่ีไอคอน หนาเรคอรดที่ตองการ ลบ ภาพประกอบท่ี 8.33 การลบเรคอรด ผา นทางลิงก Delete ทม่ี า: (ภาพโดยผูเ ขยี น, 2564) 2. จะปรากฏหนาจอเพ่ือยืนยันการลบเรคอรดน้ี โดยถาตองการลบก็ใหคลิกที่ปุม “OK” แต ถาไมต องการลบใหคลิกท่ีปุม “Cancel” การลบตาราง ลิงก ดา นหลงั ตาราง member มขี น้ั ตอน ดังนี้ 1 . ค ลิ ก ท่ี 161

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงภาพประกอบที่ 8.34 การลบตาราง ผานทางลิงก Drop ทมี่ า: (ภาพโดยผูเขียน, 2564) 2. จะปรากฏหนา จอเพอื่ ใหย นื ยันการลบตาราง ดงั นี้ ภาพประกอบที่ 8.35 แสดงหนาตา งยนื ยันการลบตาราง ทม่ี า: (ภาพโดยผเู ขยี น, 2564) 3. ถา ตอ งการลบก็ใหค ลิกที่ปมุ “OK” แตถ าไมต องการลบใหคลิกที่ปุม “Cancel” การสง ออกฐานขอ มูล เมื่อเราสรางฐานขอมูลโดยใชโปรแกรม phpMyAdmin แลว หากตองการนําฐานขอมูล ดังกลาวนี้ไปจัดเก็บที่เครื่องคอมพวิ เตอรเครื่องอน่ื เราสามารถทาํ ไดต ามข้นั ตอน ดงั นี้ 1. เลือกฐานขอมลู register แลวคลกิ ท่ลี งิ ก Export บนเนวเิ กชนั บาร 162

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ภาพประกอบท่ี 8.36 การสง ออกฐานขอมลู ผา นทางลงิ ก Export ท่มี า: (ภาพโดยผูเขียน, 2564) 2. คลิกที่ปุม Go เพ่ือบันทึกฐานขอมูลน้ีเปนไฟลลงในเครื่อง ซ่ึงไฟลที่ไดจะมีนามสกุลเปน .sql ท่ีสามารถนําไปติดตงั้ ยังเครอื่ งคอมพวิ เตอรอนื่ ๆได ภาพประกอบที่ 8.37 การสง ออกฐานขอ มูล ท่ีมา: (ภาพโดยผเู ขียน, 2564) การนําเขาฐานขอ มลู หลังจากเราไดทาํ การสงออกฐานขอ มูลในหัวขอที่ผานมาแลว เราสามารถนําไปติดต้ังที่เครื่อง คอมพวิ เตอรเ คร่ืองอนื่ ๆ ได ขน้ั ตอน ดังนี้ 1. ไปทห่ี นาแรกของ phpMyAdmin โดยคลิกท่ีไอคอนรูป ที่ บ ริ เ ว ณ พ้ื น ท่ี ฝ ง ซ า ย จากน้นั คลิกที่ลิงก Database บนเนวเิ กชนั บาร 163

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง 2. ทําการสรางฐานขอมลู เปลา ขน้ึ มาเสียกอ น โดยกรอกชอ่ื ฐานขอ มูล และคลกิ ทป่ี มุ Create ภาพประกอบท่ี 8.38 ขนั้ ตอนการสรางฐานขอ มูล ทีม่ า: (ภาพโดยผเู ขียน, 2564) 3. เราจะไมสรางตารางในฐานขอมูล เนื่องจากเราจะทําการนําเขาฐานขอมูลจากไฟลแทน โดยใหเราคลิกที่ลิงก import บนเนวิเกชันบาร แลวคลิกปุม Choose File ท่ีชอง File to import เพ่อื เลือกไฟลฐ านขอ มูลท่ีตอ งการนาํ เขา จากนนั้ คลกิ ที่ปมุ Go บรเิ วณดานลาง ภาพประกอบที่ 8.39 ขั้นตอนการนําเขาฐานขอ มูล ทม่ี า: (ภาพโดยผเู ขยี น, 2564) 164

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงบทสรปุ โปรแกรมฐานขอมูล MySQL เปนฐานขอมูลที่นิยมใชจัดเก็บขอมูลของระบบงานที่ถูกพัฒนา ดว ยภาษา PHP ซ่งึ สามารถใชง านไดท ง้ั โหมด Command Line คือ ผูใชตองพิมพคําสั่งตางๆเอง โดย มีคําสั่งภาษา SQL ในการจัดการฐานขอมูล ท่ีจะตองศึกษาและทําความเขาใจเพื่อนําไปประยุกตใช ไดแก การสรางฐานขอมูล, การสรางตาราง, การเพิ่มเรคอรด, การแกไขเรคอรด และการลบเรคอรด เปนตน และมีโปรแกรม phpMyAdmin ท่ีชวยอํานวยความสะดวกในการจัดการฐานขอมูล MySQL โดยเปนโปรแกรมท่ีทํางานในลักษณะยูสเซอรอินเตอรเฟสเปนกราฟก ทําใหการใชงานงาย ผูที่ไมมี ความรูเก่ียวกับคําส่ัง SQL ก็สามารถใชงานได โดยสามารถจัดการและเขาถึงฐานขอมูลไดท้ังหมด ไดแ ก การสรา งและลบฐานขอมูล, การสรางตาราง, แกไขรายละเอียดของตาราง, เพ่ิมเรคอรดใหมใน ตาราง, ดูขอมูลภายในตาราง, แกไขขอมูลของเรคอรด, ลบขอมูลของเรคอรด, ลบตาราง, สงออก ฐานขอมลู และนาํ เขา ฐานขอ มูล เปนตน คาํ ถามทบทวน 1. MySQL คอื อะไร 2. phpMyAdmin คืออะไร 3. จงบอกวิธีการสรา งฐานขอมลู ใหม 4. จงบอกวธิ ีการสรา งตารางใหม 5. จงอธบิ ายวธิ กี ารสง ออกและนาํ เขา ฐานขอมลู 6. ภาษา SQL คอื อะไร 7. จงอธิบายคําส่ัง SQL ในการเพมิ่ ขอมูลลงในฐานขอมลู 8. จงอธิบายคําสง่ั SQL ในการเลือกขอมลู 9. จงอธิบายคําสงั่ SQL ในการแกไ ขขอมลู 10. จงอธิบายคาํ ส่ัง SQL ในการลบขอ มูล เอกสารอา งอิง ชาญชยั ศุภอรรถกร. (2560). สรางเวบ็ แอพพลิเคชนั PHP MySQL+AJAX jQuery ฉบับสมบรู ณ. กรงุ เทพฯ : รีไววา. อนรรฆนงค คุณมณ.ี (2555). พฒั นาเว็บ App แบบมืออาชีพดวย PHP+AJAX และ jQuery. นนททบรุ ี : ไอซีดี. ชาญชัย ศภุ อรรถกร. (2561). สรา งเวบ็ แอพพลิเคชัน PHPMySQL สําหรับผเู ริม่ ตน . พิมพครัง้ ที่ 2. กรงุ เทพฯ : รไี ววา. 165

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง แผนบรหิ ารการสอนประจาํ บทที่ 9 หัวขอ เน้อื หา 1. การเขยี น PHP เช่ือมตอและปด การเชอ่ื มตอ MySQL 1.1 คําส่ังเช่อื มตอ MySQL 1.2 การเลอื กฐานขอมลู 1.3 การปดการเชอ่ื มตอ 2. การตรวจสอบขอผดิ พลาด 3. การสงคาํ สัง่ SQL ไปยงั ฐานขอมูล 4. การจดั การขอมูลผลลพั ธ 4.1 การนับจํานวนแถวของผลลพั ธ 4.2 การอา นผลลัพธแ บบอารเ รย 4.3 การเลือ่ นพอยนเตอร 4.4 การนับจาํ นวนแถวทเ่ี ปลยี่ นแปลง 5. การเขียน PHP เพ่ือเขา ถงึ ขอมลู ในตาราง 5.1 การเพิ่มเรคอรด ใหมลงในตาราง 5.2 การลบเรคอรดในตาราง 5.3 การแกไ ขเรคอรดในตาราง 5.4 การแสดงเรคอรด ในตาราง วตั ถปุ ระสงคเ ชิงพฤติกรรม เมื่อนักศกึ ษาเรียนจบบทเรียนน้ีแลว สามารถ 1. อธิบายวิธกี ารเชือ่ มตอ ฐานขอ มลู ได 2. อธบิ ายวธิ ีการปด การเชือ่ มตอฐานขอมลู ได 3. อธิบายวธิ ีการสงคาํ สัง่ SQL ไปยังฐานขอ มลู ได 4. อธบิ ายวธิ กี ารจดั การขอมูลผลลพั ธได 5. อธบิ ายวธิ ีการตรวจสอบขอผดิ พลาดได 6. สามารถเขียน PHP เพอื่ เขา ถงึ ขอ มูลในตารางได วิธสี อนและกิจกรรมการเรียนการสอน 1. วิธีสอน 1.1 บรรยายจากเอกสารประกอบการสอนวชิ า การพฒั นาฐานขอ มูลบนเวบ็ 166

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง 1.2 อภปิ รายรวมกนั ในช้ันเรยี น 1.3 เกมถาม-ตอบ 2. กิจกรรมการเรียนการสอน 2.1 คําถามทบทวน 2.2 แบบฝก ปฏิบัติ เรือ่ ง การจัดการฐานขอ มูลดว ย PHP 2.3 Active Learning แบบ PLC สือ่ การเรยี นการสอน 1. เอกสารประกอบการสอน วิชา การพัฒนาฐานขอมลู บนเว็บ 2. เว็บไซตทม่ี ีเนอ้ื หาเกี่ยวขอ งกับรายวชิ า 3. สื่อสังคมออนไลน การวดั ผลและการประเมนิ ผล 1. สังเกตการณมสี วนรวมและการถาม-ตอบ 2. การทํางานตามทไี่ ดรบั มอบหมาย 3. การทําคําถามทบทวน 4. การทาํ แบบฝก ปฏบิ ตั ิ เร่ือง การจดั การฐานขอมลู ดวย PHP 167

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง บทที่ 9 การเขียน PHP จดั การ MySQL เราไดเรียนรูการใชงานฐานขอมูล MySQL และการใชงานโปรแกรม phpMyAdmin เพ่ือ จดั การฐานขอมูล MySQL ไปแลว ถึงแมวา โปรแกรม phpMyAdmin จะสามารถใชจัดการฐานขอมูล MySQL ไดงาย แตในทางปฏิบัติแลว เราคงไมอนุญาตใหผูใชสามารถเขามาใชโปรแกรม phpMyAdmin เพ่ือจัดการฐานขอมูล MySQL เพราะมิฉะน้ันแลวผูใชอาจจะทําการเพิ่ม ลบ หรือ แกไขขอมูลตางๆ ในฐานขอมูล โดยปกติในการจัดการฐานขอมูลจะเปนหนาที่ของผูดูแลระบบ (Administrator) เทาน้ัน วิธีแกปญหาดังกลาวคือ เราจะตองเขียนโปรแกรมภาษา PHP เพ่ือให สามารถติดตอและเขาถงึ ฐานขอมลู MySQL การเขียน PHP เชือ่ มตอ และปดการเช่อื มตอ MySQL การเขา ใชง านฐานขอมูล MySQL นั้นจะตองมีการกรอกชื่อผูใช (User name) และรหัสผาน (Password) เสียกอน (ซึ่งในที่น้ีเราใชโปรแกรม XAMPP การเขาใชงานฐานขอมูล MySQL ผานทาง phpMyAdmin นั้นใชเพียง User name คือ root และ password คือ คาวาง ซ่ึงเปนคาเร่ิมตนที่ได ตอนติดต้ังโปรแกรม XAMPP) ดังนั้นการที่เราจะเขาถึงฐานขอมูล MySQL ดวยภาษา PHP ก็ตอง เรยี นรคู าํ ส่ังเชื่อมตอ MySQL และคําส่งั ปด การเชอ่ื มตอ MySQL ดวย คาํ สง่ั เชือ่ มตอ MySQL ฟง กช นั ที่ใชใ นการเปด การเช่อื มตอ กบั MySQL คือ mysqli_connect() ซงึ่ มรี ปู แบบ ดงั น้ี รูปแบบ mysqli_connect(host name, user name, password); host name เปนการระบุชอื่ โฮสตท่ตี ิดตง้ั MySQL ซ่ึงในท่นี ีค้ ือ localhost user name เปน การระบุชือ่ ผูใ ชเพื่อเขาไปใชงาน MySQL ซง่ึ ในที่น้ีคอื root password เปน การระบรุ หัสผา นเพือ่ เขาไปใชง าน MySQL ซ่ึงในทนี่ ค้ี อื คา วางไมร ะบุ database เปนการระบุชือ่ ฐานขอ มลู ที่ตอ งการติดตอ ผลลัพธของคําสั่งนี้ ถาสามารถเช่ือมตอ MySQL ไดจะคืนคากลับมาเปน true แตถา ผิดพลาดจะคนื คา False 168

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงตวั อยา งการใชฟงกช นั mysqli_connect() $conn=mysqli_connect(\"localhost\", \"root\", \"\", \"register\"); if(!$conn) { exit(\"ไมสามารถเช่อื มตอกับฐานขอ มูล\"); } ผลลัพธการทาํ งานนห้ี ากไมสามารถเช่ือมตอ ฐานขอมลู ของ MySQL ไดจะแสดงขอความ “ไม สามารถเชอื่ มตอ กบั ฐานขอมลู ” แลวออกจาก MySQL หากเชอื่ มตอไดจะไมแสดงขอความใดๆ การเลือกฐานขอ มูล หากในตอนเชื่อมตอไปยัง MySQL ดวยฟงกชัน mysqli_connect() ไมไดระบุชื่อฐานขอมูล สามารถใชฟ งกช นั mysqli_select_db() ในการเลอื กฐานขอ มูลได ซง่ึ มรี ปู แบบ ดังนี้ รปู แบบ mysqli_select_db($conn, ชื่อฐานขอมลู ) ; $conn คอื ตัวแปรท่ไี ดจากฟงกช ัน mysqli_connect() ช่อื ฐานขอ มูล คือ ช่ือฐานขอมูลท่ีตอ งการเช่อื มตอ ตวั อยางการใชฟงกชนั mysqli_select_db() mysqli_select_db ($conn, \"register\") ; การปดการเชือ่ มตอ ปกติหลังจากการใชงานฐานขอมูลเสร็จเรียบรอยแลว เราควรปดการเช่ือมตอทุกคร้ังเพ่ือ ไมใหเกิดปญหา โดยใชฟงกชัน mysqli_close() ซ่ึงสวนใหญมักปดการเชื่อมตอท่ีชวงทายของเพจ มี รูปแบบ ดังนี้ รูปแบบ mysqli_close($conn) ; $conn คอื ตัวแปรท่ไี ดจ ากฟง กชัน mysqli_connect() 169

การตรวจสอบขอผดิ พลาด เมื่อเกิดขอผิดพลาดในการทํางานของ MySQL ขึ้นหากเราตองการทราบวาขอผิดพลาดนั้น มาจากสาเหตุใดกส็ ามารถตรวจสอบโดยใชฟ งกชนั mysqli_error() ซงึ่ มรี ปู แบบ ดังน้ี รูปแบบ mysqli_connect_error() ฟงกชนั น้ีจะคนื คากลบั มาเปนขอ ความทแ่ี สดงถึงขอผิดพลาดท่ีเกิดขึ้น mysqli_error($conn) จากการเช่ือมตอ ฟงกชันนี้จะคืนคากลับมาเปนขอความที่แสดงถึงขอผิดพลาดลาสุดที่ เกิดข้ึน หรอื ถา ไมมีขอผดิ พลาดกจ็ ะไดคาเปน สตริงวาง มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง การสง คําสง่ั SQL ไปยังฐานขอมูล การสงคําส่ัง SQL ไปยังโปรแกรมฐานขอมูล หรือการคิวรี (Query) น้ันข้ึนอยูกับวาเรา ตองการทําอะไร เชน การอานขอมูล, การเพ่ิม หรือการเปลี่ยนแปลงขอมูล เปนตน ท้ังน้ี PHP ไมได ประมวลผลคําสั่ง SQL เองแตเปนเพียงผูจัดสงคําสั่ง SQL ท่ีเรากําหนดข้ึนในรูปแบบสตริงไปยัง ฐานขอมูลเทา น้ัน โดยใชฟ ง กชนั ตอไปนี้ รูปแบบ mysqli_query($conn, sql) คําสั่ง SQL ตองเขียนในรูปแบบของสตริง และผลลัพธที่ไดจาก ฟงกชนั น้ีจะเปน อะไรนั้นข้ึนอยูกับคาํ ส่ัง SQL ที่เรากําหนด สําหรับผลลพั ธท คี่ ืนกลับมาจะข้นึ อยกู ับคาํ ส่งั SQL ที่กาํ หนด สามารถสรุปไดด งั น้ี - หากเปนคําส่ังสําหรับการอานขอมูล เชน SELECT, SHOW หากสําเร็จจะคืนคากลับมาเปนชุด ขอมูลผลลพั ธท ี่ไดหรือที่เรยี กวา Result Set - คําส่ัง SQL ในกรณีอ่ืนๆ เชน การเปลี่ยนแปลงขอมูล (INSERT, UPDATE, DELETE) หากการ ทาํ งานสาํ เรจ็ จะคืนคาเปน true - หากเกดิ ขอ ผิดพลาดจากการใชฟงกชัน mysqli_query() จะคืนคา false เชน เขียนคําส่ัง SQL ผดิ 170

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงตัวอยางการใชงานฟงกชัน mysqli_query() <?php $conn = mysqli_connect(\"localhost\",\"root\",\"\",\"testdata\"); $insert= mysqli_query($conn,\"insert into customer (id,name,address) values (3,'krit','Lopburi')\"); if($insert){ echo \"เพ่มิ ขอ มูลได\" ; } else{ echo \"เพิ่มไมไ ด\"; } mysqli_close($conn); ?> ผลลพั ธการทาํ งาน ดังน้ี หากการประมวลชดุ คําส่ัง SQL โดยใชฟงกชัน mysqli_query() ไดสําเร็จไมเกิดขอผิดพลาด จะคืนคา true กลับมา แลวเมอ่ื นํามาตรวจสอบดว ย if ก็จะเปนจริง เขาไปแสดงขอความ “เพิ่มขอมูล ได” แตหากเกิดขอผิดพลาดจะคืนคากลับเปน false ก็จะเขาไปทํางานท่ี else เพ่ือแสดงขอความ “เพมิ่ ไมไ ด” ในทนี่ ้ี เพ่มิ ขอ มลู ได แสดงดังภาพ ภาพประกอบท่ี 9.1 ผลการใชง านฟงกชัน mysqli_query() ท่ีมา: (ภาพโดยผเู ขียน, 2564) สามารถเขาไปดูที่ phpMyAdmin วา มีการเพ่มิ ขอ มลู ตามทีก่ ําหนดในคาํ ส่งั SQL หรือไม ภาพประกอบท่ี 9.2 ผลการเพ่ิมขอ มลู ตามทีก่ ําหนดในคาํ ส่งั SQL ที่มา: (ภาพโดยผเู ขยี น, 2564) 171

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงการจดั การขอ มลู ผลลพั ธ ขอมูลผลลัพธหรือ Result Set คือขอมูลท่ีไดจากการใชฟงกชัน mysqli_query() เมื่อเรา กําหนดคําส่ัง SQL ท่ีเก่ียวกับการคนหาขอมูล สําหรับการจัดการกับขอมูลที่ได มีหลากหลายรูปแบบ ใหเราเลือก ดังน้ี การนับจํานวนแถวของผลลัพธ รปู แบบ mysqli_num_rows(result) result คอื ผลลพั ธที่ไดจากฟงกช นั mysqli_query() ตวั อยางการใชง านฟงกช นั mysqli_num_rows() <?php $conn = mysqli_connect(\"localhost\",\"root\",\"\",\"testdata\"); $result= mysqli_query($conn,\"select id,name,address from customer\"); $num_rows= mysqli_num_rows($result); if($num_rows){ echo $num_rows; } else{ echo \"เรยี กดไู มไ ด\"; } mysqli_close($conn); ?> ผลลพั ธทีไ่ ดคือเลข 3 เน่ืองจากใชค ําสั่ง SQL ในการเรียกดูขอมูลจากตาราง customer ผาน ฟงกชัน mysqli_query() แลวนําเอาขอมูลผลลัพธหรือ Result Set ไปใสในฟงกชัน mysqli_num_rows() ซ่งึ มีหนาทนี่ บั จาํ นวนแถวของผลลัพธน ัน้ ๆ การอานผลลัพธแบบอารเรย เปนการอานขอมูลจาก Result Set ในรูปแบบ Key/Value โดยที่ Key จะเปนชื่อฟลด ในขณะที่ Value จะเปนขอมลู ในฟล ดน ้ันๆ โดยใชฟ งกช นั ตอ ไปน้ี 172

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงรูปแบบ mysqli_fetch_array(result) result คอื ผลลพั ธท ไี่ ดจากฟงกช นั mysqli_query() ฟงกชันนี้จะกําหนดแถวท่ีจะอานขอมูลโดยการเล่ือนพอยตเตอร แตจะอางถึงขอมูลแบบ Key/Value เชน สมมตวิ า ขอ มูลใน Result Set ดังภาพ ภาพประกอบที่ 9.3 ขอ มลู ใน Result Set ที่มา: (ภาพโดยผูเขียน, 2564) - เมอื่ เรียกฟง กช นั $data = mysqli_fetch_array() คร้งั ที่ 1 จะไดผลลัพธเ ปน อารเ รย ดังน้ี $data = array ('id' => 1 , 'name' = \"Piya\" , 'address' => \"Ratchaburi\") ; - เมือ่ เรียกฟงกชนั $data = mysqli_fetch_array() คร้งั ท่ี 2 จะไดผลลัพธเปนอารเรย ดังน้ี $data = array ('id' => 2 , 'name' = \"Somsak\" , 'address' => \"Nakhon Pathom\") ; - เม่อื เรียกฟงกช ัน $data = mysqli_fetch_array() ครง้ั ที่ 3 จะไดผลลัพธเปน อารเ รย ดังนี้ $data = array ('id' => 3 , 'name' = \"krit\" , 'address' => \"Lopburi\") ; จากการเรียกใชงานฟงกชัน mysqli_fetch_array() ในแตละคร้ัง พอยนเตอรจะถูกเล่ือนไปยัง แถวถัดไปเร่ือยๆ ดังน้ันหากตองการอานขอมูลท้ังหมดจาก Result Set ก็อาจใชลูปแบบ while เพื่อ ดึงขอมูลทีละแถว โดยขอบเขตของการวนลูปเราทราบไดจากการเลื่อนพอยนเตอรไปจนกวาจะไม สามารถเลื่อนตอไปไดอีก เพราะเม่ือสิ้นสุดขอมูลแลวฟงกชัน mysqli_fetch_array() จะคืนคากลับ เปน false 173

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงตวั อยา งการใชงานฟงกชัน mysqli_fetch_array() <?php $conn = mysqli_connect(\"localhost\",\"root\",\"\",\"testdata\"); $result= mysqli_query($conn,\"select id,name,address from customer\"); while($data=mysqli_fetch_array($result)) { echo $data['id']. \" \". $data['name'].\" \". $data['address']. \"<br>\"; } mysqli_close($conn); ?> ผลลพั ธก ารทาํ งาน ดงั นี้ ภาพประกอบท่ี 9.4 ผลการใชงานฟง กช ัน mysqli_fetch_array() ทม่ี า: (ภาพโดยผูเขียน, 2564) การเลอื่ นพอยนเ ตอร ฟงกชัน mysqli_fetch_array() จะใชวิธีการเล่ือนพอยนเตอรไปยังแถวถัดไปเรื่อยๆจนถึง แถวสดุ ทาย และหากเราตองการอานขอ มูลผลลพั ธซํ้าอักคร้ังจะทําไมได ยกเวนจะใชวิธีเล่ือนพอยนเต อรก ลบั มาทีแ่ ถวแรกกอน โดยใชฟ ง กชนั ตอ ไปน้ี รูปแบบ mysqli_data_seek( result, เปน ฟง กชันในการเลอื่ นพอยนเ ตอรไ ปชที้ ล่ี าํ ดบั แถวแรกท่รี ะบุ index) result คอื ผลลัพธทีไ่ ดจ ากฟงกช ัน mysqli_query() index คือลําดบั แถวใน Result Set 174

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงตัวอยางการใชงานฟงกช ัน mysqli_data_seek() <?php $conn = mysqli_connect(\"localhost\",\"root\",\"\",\"testdata\"); $result= mysqli_query($conn,\"select id,name,address from customer\"); mysqli_data_seek($result, 0); // เล่ือนพอยนเ ตอรก ลับไปทแี่ ถวแรก while($data=mysqli_fetch_array($result)) { echo $data['id']. \" \". $data['name'].\" \". $data['address']. \"<br>\"; } mysqli_close($conn); ?> การนับจาํ นวนแถวท่ีเปลย่ี นแปลง ถา เราตอ งการตรวจสอบวา มขี อ มลู จาํ นวนกีแ่ ถวที่เกิดการเปลี่ยนแปลงจากการคิวรีครั้งลาสุด กส็ ามารถตรวจสอบได โดยใชฟ งกช นั ตอ ไปน้ี รปู แบบ mysqli_affected_rows($conn) จะคืนคาเปนจํานวนแถวที่เกิดจากการเปล่ียนแปลงตามคําส่ัง SQL ที่เกี่ยวกับการแกไขขอมูลครั้งลาสุดไดแก INSERT, UPDATE, หรือ DELETE หากไมมีการเปลี่ยนแปลงจะคืนคา 0 และคนื คา –1 หากเกิดขอผดิ พลาด ตัวอยา งการใชงานฟง กชัน mysqli_affected_rows() <?php $conn = mysqli_connect(\"localhost\",\"root\",\"\",\"testdata\"); $sql = \"delete from customer where id = 3\"; $result= mysqli_query($conn,$sql); echo \"จาํ นวนแถวท่ีเปล่ยี นแปลงคร้งั ลา สุดจํานวน \". mysqli_affected_rows($conn) ; mysqli_close($conn); ?> เราควรใชฟงกชันนี้ทันที หลังจากใชฟงกชัน mysqli_query() แลวจึงจะเปนการตรวจสอบ การเปลย่ี นแปลงลา สุด 175

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงผลลพั ธการทํางาน ดงั น้ี ผลลัพธที่ได คือ 1 เน่ืองจากคําสั่ง SQL กําหนดใหลบขอมูลของผูใช id = 3 เพราะฉะน้ัน จาํ นวนแถวทม่ี ีการเปลยี่ นแปลงลาสดุ ก็คอื 1 นัน่ เอง ภาพประกอบท่ี 9.5 ผลการใชง านฟง กชนั mysqli_affected_rows() ท่ีมา: (ภาพโดยผูเ ขยี น, 2564) คาํ สัง่ SQL ภาพประกอบที่ 9.6 ผลลัพธใ น phpMyAdmin ท่ีมา: (ภาพโดยผูเขยี น, 2564) สามารถดผู ลลพั ธไดท่ี phpMyAdmin ดงั ภาพวา ขอมลู ผูใช id = 3 ถกู ลบท้งิ ไปแลวจาํ นวน 1 แถว (บัญชา ปะสีละเตสัง, 2557) 176

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงการเขยี น PHP เพื่อเขาถึงขอ มลู ในตาราง ฟงกชันสําคัญในการเขาถึงขอมูลในตารางคือ การเพิ่ม, ลบ, แกไข และการแสดงขอมูล ใน ที่น้ีจะใชฐานขอมูล testdata และตาราง customer มาใชในการเขียนโปรแกรม โดยเร่ิมจากการ สรา งเว็บหนา หลักกอน ทร่ี วมลงิ กฟ ง กช ันในการเขาถึง ดังนี้ ไฟล main.html <html> <body> <p>หนาจอของผดู แู ลระบบ</p> <p><a href=\"insert.php\">เพิม่ ขอมลู </a></p> <p><a href=\"delete.php\">ลบขอ มลู </a></p> <p><a href=\"updateOld.php\">แกไ ขขอ มูล</a></p> <p><a href=\"select.php\">จัดทํารายงาน</a></p> </body> </html> ผลลัพธก ารทาํ งาน ดังน้ี ภาพประกอบท่ี 9.7 ผลลพั ธของไฟล main.html ทีม่ า: (ภาพโดยผเู ขยี น, 2564) ไฟล main.html เปนหนาเว็บหลักของการเขาถึงขอมูลโดยประกอบดวยฟงกชัน การเพ่ิม ขอ มูล (insert.php), การลบขอมลู (delete.php), การแกไ ขขอ มูล (form_old.php), และการจัดทํา รายงาน (select.php) การเพมิ่ เรคอรด ใหมลงในตาราง จากรูปผลลัพธของไฟล main.html ถาเราคลิกท่ีลิงก “เพิ่มขอมูล” จะทําการเรียกไฟล insert.php ซึ่งเปนแบบฟอรมสําหรบั ใหก รอกขอมูลลงไป โคดโปรแกรมเปนดังนี้ 177

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงไฟล insert.php <?php if(!isset($_POST['send'])) { ?> <form action=\"<?php echo $_SERVER['PHP_SELF'];?>\" method=\"post\" name=\"form1\"> แบบฟอรมการเพมิ่ ขอ มลู <p> รหสั พนกั งาน <input type=\"text\" name=\"id\"> <p> ชือ่ พนกั งาน <input type=\"text\" name=\"name\"> <p> ทีอ่ ยู <input type=\"text\" name=\"address\"> <p> <input type=\"submit\" name=\"send\" value=\"เพ่มิ ขอมลู \"> <input type=\"reset\" name=\"cancel\" value=\"ยกเลิก\"> </form> <?php } else { $id = $_POST['id']; $name = $_POST['name']; $address = $_POST['address']; $conn= mysqli_connect(\"localhost\",\"root\",\"\",\"testdata\"); $sql = \"insert into customer (id,name,address) values ('$id','$name','$address')\"; $result=mysqli_query($conn,$sql); if($result){ echo \"เพม่ิ ขอมลู ได <br>\"; mysqli_close($conn); } else{ echo \"เพิ่มไมได< br>\"; } echo \"<a href=\\\"insert.php\\\">กลับหนาเพมิ่ ขอ มลู </a><br>\"; echo \"<a href=\\\"main.html\\\">กลับหนาเวบ็ หลัก</a><br>\"; } ?> 178


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook