มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง บทท่ี 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
Search
Read the Text Version
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209