เรียนรู้ MySQL4,5 -บันทึกข้อมูล อ่านข้อมูล

เรียนรู้ MySQL4,5 -บันทึกข้อมูล อ่านข้อมูล

ต่อเนื่องกันมาจากบทความที่แล้วนะครับ บทความที่แล้วเราก็ได้แนะนำไปแล้วว่า MySQL คืออะไร ทำงานอย่างไร และเตรียมฐานข้อมูลอย่างไร ตอนนี้เราก็มีฐานข้อมูลที่ถูกเตรียมขึ้นมาพร้อมใช้งานจากบทความที่แล้วกันอยู่แล้วนะครับ บทความนี้ เราจะมาเริ่มใช้งานกันจริงๆแล้วครับ

ในบทความนี้ผมจะแนะนำเพียงแต่ 2 ตารางให้เป็นตัวอย่างเท่านั้น ส่วนอีก 1 ตารางให้ลองศึกษาจากตัวอย่างและนำไปประยุกต์ใช้เองครับ ไม่น่าจะยากแล้วเพราะว่า ก็แค่เปลี่ยนชื่อตารางและ field เท่านั้นเป็นอันเรียบร้อย

เมื่อเราจะเริ่มใช้งาน MySQL เมื่อไร เราจำเป็นที่จะต้องมีการล็อกอินเข้าไปในระบบ MySQL เสมอ นี่คืออีกหนึ่งเรื่องที่สร้างความสับสนให้มือใหม่มาแล้วนักต่อนัก เพราะว่า การจะทำเว็บขึ้นมาสัก 1เว็บ ให้เป็นรูปเป็นร่างนั้น username password เต็มไปหมด จนเล่นเอา งงมากมายมาหลายคนแล้ว เพราะว่า จะมี 1.FTP 2.Control Panel 3.Email 4.Database 5.Web แต่นี้ก็มี username password 5 ชุดแล้ว เปลืองเนื้อที่บนสมองมากๆ (แต่หลายคนก็เล่นให้ชุดเดียว ปั๊มออกมา ทั้ง5ระบบเลย ก็ง่ายอีกแบบ แต่ก็ hack ง่ายด้วยอีกเหมือนกัน -_-")

เอาเป็นว่า เราจำเป็นที่จะต้องมี username password ที่ใช้สำหรับระบบ MySQL เสมอ(หากเราต้องการใช้ MySQL) เพราะว่า หากว่าเราไม่มี เราจะล็อกอินเข้าไปในระบบไม่ได้ และจะใช้งานใดๆต่อไม่ได้
แต่หากสงสัยว่า ทำไมจึงต้องมี username password คำตอบก็ง่ายๆ เพราะว่า MySQL นั้นเป็นระบบ แล้วระบบ ก็มีคนใช้งานหลายคน หลายเว็บ ถ้าใครก็ได้เข้าใช้ ของใครก็ได้แล้วจะเกิดอะไรขึ้นกับฐานข้อมูลคนอื่น ถ้าเกิดคนนั้น หมั่นใส้ขึ้นมา

เอาเป็นว่าตอนนี้นั้นเราก็มี username password แล้ว จากบทความในการปรับแต่ง WAMP นะครับ (ยังจำได้หรือเปล่า) เราจะใช้ username password นั้นกันครับ
สำหรับผมก็ตั้งเอาไว้ว่า user: root password:1234 ครับ แล้วเราจะใช้ค่านี้กันเป็นตัวอย่างไปตลอดนะครับ

เอาล่ะครับ ตอนนี้เราได้เข้าเรื่องกันจริงจังแล้ว ก็เริ่มต้นจาก Function แรกเลย นั่นคือ
function mysql_connect() -- function นี้ใช้สำหรับการเชื่อมต่อเข้าระบบ MySQL นะครับ หากไม่มีการเชื่อมต่อก็จะไม่สามารถใช้งานได้
ลักษณะการใช้งานคือ

mysql_connect ([string hostname [:port] [:/path/to/socket] [, string username] [, string password]])

อ่า.... งงกันไปสิ.... เหอๆๆๆ เราจะยกตัวอย่างมาให้ดูครับ
ขอให้สร้างไฟล์ ชื่อ mysql_connect.php ขึ้นมาครับ แล้วใส่โค้ดดังนี้

<?php @mysql_connect("localhost", "root", "1234") or die("เชื่อมต่อไม่สำเร็จ มีข้อมูลผิด"); ?>
     

Save >> run ดู จะต้องได้ผลว่า ว่างเปล่า จึงจะถูกต้องครับ นั่นหมายความว่า คุณได้เชื่อมต่อ MySQL สำเร็จแล้ว ยินดีด้วยครับ !! หากมีข้อผิดพลาด ขอให้ย้อนไปตั้งค่า MySQL ตามบทความที่พูดถึงการตั้งค่า MySQL และที่เราแนะนำให้สร้างฐานข้อมูลทดสอบก่อนครับ

สำหรับการรันนั้นคือการเรียกไฟล์ผ่าน IE นะครับ ตัวอย่างผมเขียนไฟล์นี้เก็บไว้ใน C:\\wamp\\www\\testmysql\\mysql_connect.php (หากใครใช้ wampจะเจอ C:\\wamp\\www\\ ในเครื่องตัวเอง ผมสร้างแฟ้ม testmysql ขึ้นมาครับ แล้วใส่ไฟล์นี้เข้าไป) แล้วเวลารัน ผมก็เปิด internet explorer ขึ้นมาแล้วพิมพ์ลงไปว่า http://localhost/testmysql/mysql_connect.php ครับ
แต่ยังครับ มันแค่การเริ่มต้น มาดูขั้นตอนต่อมาครับ

ต่อมาด้วย Function ที่สองคือ
function @mysql_select_db("human") or die("Could not select database!");

ซึ่งจะทำหน้าที่สำหรับการเลือกใช้งาน ฐานข้อมู, เพราะว่าระบบอาจจะมีเป็ฯร้อยฐานข้อมูลเราต้องเลือกใช้ให้ถูกต้อง

ให้แก้ไฟล์ mysql_connect.php เป็นดังนี้ครับ

<?php @mysql_connect("localhost", "root", "1234") or die("เชื่อมต่อไม่สำเร็จ มีข้อมูลผิด"); @mysql_select_db("human") or die("เลือกฐาน ข้อมูลไม่ได้"); ?>

Save>>run จะต้องได้ผลว่างเปล่าทั้งหมดนะครับจึงจะถือว่าถูกต้อง

ตามกันมาปิดท้ายจบงานด้วยคำสั่ง

mysql_close(); นั่นคือการปิดการเชื่อมต่อ mysql นั่นเองครับ

ลองแก้ไขไฟล์ mysql_connect.php เป็นดังนี้ครับ

<?php @mysql_connect("localhost", "root", "1234") or die("เชื่อมต่อไม่สำเร็จ มีข้อมูลผิด"); @mysql_select_db("human") or die("เลือกฐานข้อมูลไม่ได้"); echo "ยินดีด้วย เชื่อมต่อ MySQL สำเร็จแล้ว"; mysql_close(); ?>

Save >> Run จะต้องได้ผลว่า ยินดีด้วย เชื่อมต่อ MySQL สำเร็จแล้ว เท่านั้นนะครับ หากมีสิ่งใดแปลกปลอมถือว่าผิดครับ ต้องลองไล่ทีละขั้นดูอีกทีครับ ว่าผิดที่จุดใด

เอาล่ะครับ เชื่อมต่อได้แล้ว เลือกเปิดฐานข้อมูลได้แล้ว ทีนี้เราจะมาเรียกข้อมูลออกจากฐานข้อมูลกันครับด้วยคำสั่ง mysql_query() นั่นเอง
สำหรับ function mysql_query นี้ จะมีการใช้งานย่อย 3 4 แบบครับ นั่นคือ 1.SELECT หรือการเลือกข้อมูล 2.INSERT การเพิ่มข้อมูล 3.DELETE หรือลบข้อมูล 4.UPDATE หรือแก้ไขข้อมูลนั่นเอง เราก็จะมาเริ่มต้นจากการใส่ข้อมูลที่เรามีเข้าใปในฐานข้อมูลก่อนนะครับ (เราเตรียมฐานข้อมูลเปล่าจากบทความที่แล้วเอาไว้แล้ว)

ให้สร้างไฟล์ใหม่ขึ้นมาครับ ชื่อว่า mysql_query_insert.php ให้เขียนโค้ดดังนี้

<?php include ("mysql_connect.php"); $query = "INSERT INTO friend SET name='MeeWebFree', address='www.MeeWebFree.com'"; $result = mysql_query($query); mysql_close();

และขอให้แก้โค้ดในไฟล์ mysql_connect.php เหลือเพียงแค่

<?php @mysql_connect("localhost", "root", "1234") or die("เชื่อมต่อไม่สำเร็จ มีข้อมูลผิด"); @mysql_select_db("human") or die("เลือกฐานข้อมูลไม่ได้"); ?>

ทั้งนี้เนื่องจากว่า เราใช้การเรียกไฟล์ mysql_connect.php เข้ามาใส่ในไฟล์ mysql_query_insert.php ด้วยคำสั่ง include นั่นเอง

Save >> Run ไฟล์ mysql_query_insert.php นะครับ กดรันทีเดียว จะต้องได้ผลว่างเปล่า ไม่มีข้อความใดๆจึงจะถูกต้องแล้วกดรันทีเดียวพอนะครับ
เอาล่ะครับ หากได้ตามนั้น เรามาดูในฐานข้อมูลกันครับ ด้วยการเปิดหน้า phpMyAdmin ขึ้นมา หากไม่รู้เปิดที่ไหนให้อ่านบทความแนะนำการใช้ wamp ครับ
เมื่อเปิด phpMyAdmin ขึ้นมาแล้ว ก็ดูที่ฐานข้อมูล human นะครับ แล้วคลิกที่ตาราง friend

เปิด phpMyAdmin มาดูข้อมูลที่เก็บใน field

แล้วต้องได้

ข้อมูลที่ถูกเก็บอยู่ในฐานข้อมูล

เป็นอันครบถ้วนทุกกระบวนการครับ สำเร็จในวิทยายุทธ์การบันทึกข้อมูลเรียบร้อยแล้ว (สำหรับผู้ที่บันทึกข้อมูลเป็นภาษาไทยเดี๋ยวบอกเทคนิคเพิ่มครับ) หากอยากเพิ่มข้อมูลอีกหลายๆชุด (เรียกแต่ละชุด หรือการรันแต่ละครั้งว่า 1 record) ก็เพียงแค่ แก้ข้อมูล ทั้งสองค่าในไฟล์ mysql_query_insert.php และ Save >> Run เท่านั้นครับ ในที่นี้ ผมจะ Add เข้าไป 3 record นะครับ ตามของผม ผมก็ใส่ข้อมูลเข้าไปดังนี้

ข้อมูลที่เพิ่มเข้ามาในฐานข้อมูล

ต่อมาก็มาถึงข้อมูลการเรียกดูข้อมูลที่เราได้บันทึกไปครับ อันนี้จะใช้งานคู่กับการ query แบบ SELECT ครับ ตามตัวอย่าง

สร้างไฟล์ชื่อ mysql_query_select.php มีโค้ดดังนี้

<?php include ("mysql_connect.php"); $query = "SELECT * FROM friend ORDER BY name"; $result = mysql_query($query); $namedis = mysql_result($result, 0, "name"); $addressdis = mysql_result($result, 0, "address"); echo $namedis; echo $addressdis; ?>

Save>> run เพื่อดูผลนะครับ จะต้องได้ผลเป็นข้อความ MeeWebFreewww.MeeWebFree.com มันมีการทำงานดังนี้ครับ

  1. include ("mysql_connect.php"); >> คือการดึงไฟล์เชื่อมต่อเข้ามาใช้งาน
  2. $query = "SELECT * FROM friend ORDER BY name"; >> นำคำสั่งใส่ในตัวแปรเพื่อเตรียมตัวประมวลผล
  3. $result = mysql_query($query); >> ค้นหาทุกfield จากตาราง friend
  4. $namedis = mysql_result($result, 0, "name"); >> ดึงผลลัพท์ที่ได้ ออกมาจากตัวแปร result เพราะว่า การค้นหาจากบรรทัดด้านบนนั้น จะได้ผลลัพท์ออกมาทั้งหมด 3 record การเอามาแสดงผลจึงต้องระบุว่า จะเอาจาก record ใหนออกมาแสดง
  5. $addressdis = mysql_result($result, 0, "address"); >> เช่นเดียวกัน แต่ว่า อันนี้ดึงออกมาจาก field ที่ชื่อ address ที่ record 0 (ผลที่ได้จะถูกเรียงมาแล้วจากคำสั่ง ORDER BY name หรือเรียงตาม field ที่ชื่อ name นั่นเอง)
  6. echo $namedis; echo $addressdis; >> คือการ แสดงข้อมูลที่ถูกเก็บอยู่ในตัวแปรนั่นเอง

คำถามที่มักจะเกิดตามมาติดๆ ถ้าเราต้องการแสดงทุก record ล่ะจะทำอย่างไร
ไม่ยากครับ ลองเปลี่ยนโค้ด mysql_query_select.php ให้เป็นดังนี้

<?php include ("mysql_connect.php"); $query = "SELECT * FROM friend ORDER BY name"; $result = mysql_query($query); for ($count=0; $count < mysql_numrows($result); $count++) {   $namedis = mysql_result($result, $count, "name");   $addressdis = mysql_result($result, $count, "address");   echo "เว็บ เพื่อนบ้าน : $namedis ($addressdis) <br />"; } ?>

Save>> Run แล้วจะต้องได้ผลดังนี้
เว็บเพื่อนบ้าน : MeeWebFree (www.MeeWebFree.com)
เว็บเพื่อนบ้าน : MindWebHost (www.MindWebHost.com)
เว็บเพื่อนบ้าน : ThTemple (www.ThTemple.com)
ถือว่าถูกต้องครับ ก็ไม่ได้ยากอะไร เป็นเพียงแค่การวนลูปดึงข้อมูลในแต่ละ record ออกมาแสดงนั่นเองครับ ใช้ function for มาช่วยผสมกับการนับจำนวน record ด้วยคำสั่ง mysql_numrow($result)

และในการแสดงผลข้างต้น นอกจาก function mysql_result แล้วนั้น ยังมี function mysql_fetch_array() อีกด้วยครับ ซึ่งการใช้งานมีดังนี้

ลองเปลี่ยนโค้ด mysql_query_select.php ให้เป็นดังนี้

<?php include ("mysql_connect.php"); $query = "SELECT * FROM friend ORDER BY name"; $result = mysql_query($query); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $namedis = $row['name']; $addressdis = $row['address']; echo "เว็บ เพื่อนบ้าน : $namedis ($addressdis) <br />"; } ?>

Save>> Run แล้วจะต้องได้ผลดังนี้
เว็บเพื่อนบ้าน : MeeWebFree (www.MeeWebFree.com)
เว็บเพื่อนบ้าน : MindWebHost (www.MindWebHost.com)
เว็บเพื่อนบ้าน : ThTemple (www.ThTemple.com)

จะสังเกตได้ว่า ได้ผลที่เหมือนกัน..... ดังนั้น เลือกใช้ตามชอบใจครับ ขึ้นอยู่กับว่าเข้าใจอันไหนง่ายกว่าเลือกใช้อันนั้นล่ะครับ
แต่ผมมีข้อสังเกตอย่างนึงครับ นั่นคือในแบบของ mysql_fetch_array นั้น มันจะต้องเรียงผลลัพท์ออกมาเลย (ด้วย function ของ while ทำให้มันต้องเรียง) แต่ว่าในกรณีของ mysql_result นั้น เราสามารถดึงออกมาจาก Record ไหนก็ได้อย่างอิสระ ด้วยตัวเลขที่อยู่ตรงกลางระหว่างตัวแปร result กับ ตัวแปรที่เป็นชื่อ field นั่นล่ะครับ ที่จะเป็นตัวระบุตำแหน่งของ record ที่จะดึงออกมาแสดงผล

สำหรับข้อมูลภาษาไทย
หลายท่านเจอปัญหานี้แน่นอน ฟันหัวแบะได้ 5555 แต่!!! ไม่ใช่ทุกท่านที่จะเจอ (ไม่งั้นหัวแบะพอดี) เพราะว่า บางท่านนั้นได้ตั้งค่า ไฟล์ my.cnf ไว้แล้ว จึงทำให้ใช้ภาษาไทยได้ทันที แต่ host ในปัจจุบันนั้นหลายที่มักไม่ตั้งค่านี้ ทำให้เขียนภาษาไทยแล้วมีปัญหากลายเป็น ???? ช่วงนี้จะเจอบ่อยครับ แล้วยิ่งใช้ host free ของต่างประเทศแล้วล่ะก็ ใครไม่เจอนี้ถือว่าผิดปรกติครับ หุๆๆๆ

ผมจะพูดถึงมุมมองสำหรับท่านผู้ใช้งานเท่านั้น ไม่พูดถึงขนาดแก้ my.cnf ครับ วิธีการที่ทำให้ อ่านเขียนข้อมูลภาษาไทยได้ ไม่เป็น ???? นั่นคือการเพิ่ม tag เข้าไป
mysql_query("SET NAMES 'tis620' "); >>> tag นี้ครับที่จ้อง ต้องเพิ่มเข้าไป ... แล้วเพิ่มเข้าไปตรงไหน .... เพิ่มเข้าไปตรงบรรทัดที่ต่อจากการ connect
จากตัวอย่างของเรานั้น ก็เพียงแค่แก้ไขไฟล์ mysql_connect.php เป็น

<?php @mysql_connect("localhost", "root", "1234") or die("เชื่อมต่อไม่สำเร็จ มีข้อมูลผิด"); @mysql_select_db("human") or die("เลือกฐานข้อมูลไม่ได้"); mysql_query("SET NAMES 'tis620' "); ?>

จบแล้วครับ ...เขียนอ่านภาษาไทยสบายยยยย

และเท่าที่ดูแล้ว MySQL 4 หรือ 5 นั้นก็ไม่ได้มีความแตกต่างกันแต่อย่างใดครับ ศึกษาทีเดียว แต่ใช้ได้หลายระบบ ก็ดีไม่น้อยครับ

เอาล่ะครับ วันนี้ก็สำเร็จยุทธวิธีการโผ... เอ้ย การบันทึกข้อมูล การเรียกข้อมูลออกมาแสดงผลแล้ว..... บทความต่อไป สำคัญแล้วครับ คือการ บันทึกข้อมูลที่ได้จาก แบบฟอร์มหน้าเว็บเพื่อบันทึกเข้าฐานข้อมูลครับ

สำหรับตารางอื่นที่ไม่ได้แนะนำให้ลองใช้ ขอฝากเป็นการบ้านแล้วกันนะครับ ให้ลองกันเองเพื่อจะได้ทราบว่า สามารถเขียนโค้ดเพื่อบันทึกข้อมูลหรือดึงข้อมูลออกมาได้หรือไม่ ถ้าไมได้ใช้โค้ดจากที่เราเขียนให้ ลองดูครับ

Create: Modify : 2010-04-16 22:18:42 Read : 16607 URL :