Thaimisc.com : PHP กับฐานข้อมูล MySQL (22)
ThaiMisc.Com : Free Webboard | Free GuestBook | Free Poll | Free Ecard Server | Free Java Chat Room | Advertising | Contact Us | Colocation | Web Hosting | เปิดร้านค้าฟรี


Category : Php Developer Print Article Only Print Aticle With Comment
PHP กับฐานข้อมูล MySQL (22)
เขียนโดย เดอะกาฝากไดอารี่ (ball@bbznet.com) , 15-07-2004
โอ้โห กี่สิบวันละเนี่ยที่ผมไม่ได้มาอัพเดต... พอดีกำลังวุ่นๆ กับชีวิต บวกกับกิเลสเยอะครับ เหอๆ แต่ก็หาเวลามาอัพเดตจนได้ (ป่านนี้ผู้อ่านทั้งหลาย คงจะไปไกลกว่าที่สอนในบทความนี้แล้วละมั้ง)

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

ถึงตอนนี้ ในตาราง employee ของเราก็จะมีข้อมูลเป็นดังนี้ครับ

ฟิลด์ eid ที่เพิ่มมาก็คือฟิลด์ที่ผมสอนท่านผู้อ่านทั้งหลายให้เพิ่มเข้าไปนั่นเอง

ลองวิชาซักหน่อย แทรกระเบียนเพิ่มเอง
คราวนี้เรามาลองวิชากันหน่อยนะครับ... ขอให้เขียนโค้ด PHP ขึ้นมาเพื่อทำการเพิ่มระเบียนข้อมูลเข้าไปยังตาราง employee โดยมีข้อมูลดังนี้

name = Somjit Moongmaan
position = Janitor
department = Personnel
salary = 5000

หลายท่านอาจจะงงว่า ตำแหน่ง Janitor หมายถึงอะไร... ภาษาไทยเราแปลว่า "นักการ" หรือ "คนที่มีหน้าที่ดูแลทำความสะอาดอาคาร" ครับ

ทีนี้ลองลบดูนะครับ
เอาล่ะ เสร็จหรือยังครับ?!? อ๊ะๆ ไม่ต้องสงกะสัยอะไรทั้งนั้น ผมไม่ได้ขี้เกียจเขียนโค้ดตัวอย่างให้คุณๆ ทั้งหลายได้อ่าน แต่ว่าผมอยากให้คุณลองเขียนด้วยตนเองดูกันบ้าง แบบไม่ต้องมีเฉลยหรอกนะ ใครที่จะไม่ได้ว่าเขียนยังไง (เพราะว่าทิ้งค้าง ไม่ยอมสอนมาซะนาน) ขอให้ย้อนกลับไปอ่านตอนเก่าๆ เอานะครับ ผมไม่ขอสอนซ้ำ เอิ๊กๆ

ที่สำคัญ ห้ามใช้ phpMyAdmin เข้ามาช่วยนะครับ อย่าโกงๆ

เอาละครับ ถึงตรงนี้ ถ้ากลับมาดูข้อมูลกันอีกที เราก็จะเห็นว่ามีข้อมูลของคุณ สมจิต มุ่งมั่น เพิ่มมาอีกคนแล้ว... แต่หลังจากที่ผู้จัดการฝ่าย IT ของเรา คุณ สมชาย สุขสวัสดิ์ เข้ามาเห็นเข้า อ๊ะ! ไม่ต้องๆ เราไม่จำเป็นต้องเอา "นักการ" เข้ามาใส่ในฐานข้อมูลด้วย เหตุผลคืออะไรก็ไม่ยอมบอก แต่ที่แน่ๆ เราต้องลบข้อมูลออกครับ

หากมี phpMyAdmin อยู่ด้วย เราแค่คลิกปุ่มเดียวเป็นอันจบครับ (ดูรูปประกอบ)

พอคลิกที่ไอคอนรูปถังขยะสีแดงดังรูปแล้ว ก็จะปรากฏหน้าต่างขอการยืนยันว่าต้องการจะลบจริงๆ หรือไม่... ถ้าต้องการลบ เราก็แค่คลิกปุ่ม OK ไปก็จบ แต่ถ้าไม่ต้องการ ก็คลิกปุ่ม Cancel ครับ

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

DELETE FROM 'employee' WHERE 'eid' = '10' LIMIT 1

เห็นไหมครับ นี่แหละ รูปแบบคำสั่งของการลบข้อมูล... สังเกตอีกนิดหนึ่งว่า เงื่อนไขในการลบนั้น มีแค่ 'eid' = '10' เท่านั้นเอง นี่คือผลพวงที่มาจากการเพิ่มฟิลด์ eid เข้าไปนั่นเอง มิฉะนั้นคงได้เขียนเงื่อนไขกันยาว... และเพื่อเป็นการไม่ประมาท จึงมีการกำหนดเงื่อนไข LIMIT 1 เข้าไป หมายความว่าจะดำเนินการคำสั่งนี้ กับระเบียนเพียงระเบียนเดียวเท่านั้น เกิดมีฟลุ๊ค มีระเบียนซ้ำกันขึ้นมา ระเบียนที่ซ้ำจะไม่โดนลบไปด้วย (อย่างไรก็ดี ไม่ควรมีระเบียนซ้ำ เพราะว่าฟิลด์ eid นั้นจะเป็นฟิลด์ที่ถูกกำหนดค่าเองโดยอัตโนมัติ โดยจะมีค่าเพิ่มขึ้นไปเรื่อยๆ)

รูปแบบคำสั่งของ DELETE นั้น เป็นแบบนี้ครับ

DELETE FROM ชื่อตาราง [WHERE เงื่อนไข]

มีข้อสังเกตเหมือนคำสั่ง UPDATE นะครับว่า เราเลือกที่จะไม่ระบุเงื่อนไขลงไปก็ได้ แต่นั่นมีความหมายเท่ากับ การลบข้อมูลทั้งหมดในระเบียนครับ (การไม่ระบุเงื่อนไข ก็หมายความว่าเราไม่สนใจว่าข้อมูลนั้นจะเป็นอะไรนั่นเอง)

สำหรับเงื่อนไขนั้น เรากำหนดได้หลากหลายครับเช่น

WHERE eid = '1' จะมีความหมายว่า มีข้อมูลในฟิลด์ eid เป็น 1
WHERE salary >= '20000' จะมีความหมายว่า มีข้อมูลในฟิลด์ salary มากกว่าหรือเท่ากับ 20000
WHERE name LIKE 'S%' จะมีความหมายว่า มีข้อมูลในฟิลด์ name โดยมีตัวอักษรตัวแรกเป็นตัว S
WHERE name LIKE 'S%' AND department = 'IT' จะมีความหมายว่า มีข้อมูลในฟิลด์ name โดยมีตัวอักษรตัวแรกเป็นตัว S และมีข้อมูลในฟิลด์ department เป็น IT

เป็นต้น

ข้อให้ดูข้อสังเกตเกี่ยวกับการกำหนดเงื่อนไขแบบ LIKE นะครับ มันจะไม่เหมือนกับเครื่องหมายเท่ากับ ( = ) ที่จะหมายความว่า ข้อมูลในฟิลด์นั้นๆ จะต้องมีค่าเท่านี้เป๊ะๆ

ดังนั้น

= 'S' จะมีความหมายว่า ต้องมีค่าเป็น S เป๊ะๆ
LIKE 'S%' จะมีความหมายว่า ขอให้ขึ้นต้นด้วย S ก็พอ (เครื่องหมาย % จะหมายถึง ตัวอักขระใดๆ ก็ได้ ไม่จำกัดจำนวน)
LIKE '%S' จะหมายความว่า ขอให้ลงท้ายด้วย S ก็พอ
LIKE '%S%' จะหมายความว่า ขอให้มีตัว S อยู่ข้างในก็พอ
LIKE 'S___' จะหมายความว่า ขอให้ขึ้นต้นด้วยตัว S และมีตัวอักษรอื่นๆ ตามได้อีก 3 ตัวอักษร (เครื่องหมาย _ จะหมายถึง ตัวอักขระใดๆ ก็ได้ 1 ตัว)

เป็นตัวอย่างเล็กๆ น้อยๆ ครับ นำไปใช้ประยุกต์กันเอาเอง

(ติดตามตอนต่อไป)

<- Back | Next ->

ThaiMisc.Com : Free Webboard | Free GuestBook | Free Poll | Free Ecard Server | Free Java Chat Room | Advertising | Contact Us
Copyright 1999-2006 Thailand Miscellaneous. Allrights reserved. webmaster@thaimisc.com