Thaimisc.com : PHP กับฐานข้อมูล MySQL (13)
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 (13)
เขียนโดย เดอะกาฝากไดอารี่ (ball@bbznet.com) , 23-05-2004
อยากบอกว่าเซ็งครับ คนทักมาเพียบ กดปิดผิดปิดถูกเลย... นั่งอัพเดตบทความมาร่วมครึ่งชั่วโมง หายหมดในพริบตา T_T

ก็ขอรวบรัดเลยแล้วกัน เพราะเขียนยังไงๆ ก็ไม่ได้อารมณ์เดิมแล้ว... แบบอารมณ์ตอนนี้เซ็งสุดขีดครับ

ฟังก์ชันที่ควรจำให้ขึ้นใจ (ต่อ)

mysql_query()
ฟังก์ชันนี้เป็นฟังก์ชันสำหรับใช้รันคำสั่ง SQL ครับ จะมีการใช้ยังไงนั้น ลองดูตัวอย่างเลยครับ

<?php

mysql_connect("localhost", "root", "") or die ("ไม่สามารถเชื่อมต่อกับฐานข้อมูลได้"); //ทำการเชื่อมต่อกับฐานข้อมูล
mysql_select_db("company") or die ("ไม่สามารถเลือกใช้ฐานข้อมูลนี้ได้"); //เลือกใช้ฐานข้อมูลชื่อ company
$sql = "SELECT * FROM employee"; //SQL statement.
$result = mysql_query($sql); //ประมวลผลคำสั่ง SQL

?>

ความจริงแล้ว เราสามารถที่จะเขียนย่อ

$sql = "SELECT * FROM employee";
$result = mysql_query($sql);

ให้เหลือแค่

mysql_query("SELECT * FROM employee");

ได้เลยครับ แต่ที่เราไม่ทำเช่นนั้นเพราะอะไรรู้ไหมครับ?!? จะบอกให้ก็ได้ ก็เพราะว่า

1. การเก็บคำสั่ง SQL ไปเป็นตัวแปร $sql เลยนั้น มีประโยชน์ในตอน debug (หรือจะเรียกว่า ตรวจสอบข้อผิดพลาดของโปรแกรม) ในกรณีที่โปรแกรมรันไม่ได้ดั่งใจครับ โดยเฉพาะในกรณีที่เราทำการพัฒนาเว็บแอปพลิเคชั่นแบบซับซ้อน ซึ่งอาจจะต้องมีการเอาค่าในตัวแปร มารวมๆ กันเป็นคำสั่ง SQL... เวลาที่รันโค้ดแล้วไม่ได้ดั่งใจ เราจะได้สามารถทำการแทรกคำสั่ง echo $sql; เข้าไป เพื่อดู SQL statement ได้ครับ

2. เราเก็บค่าที่ return มาจากฟังก์ชัน mysql_query() เอาไว้ใน $result ก็ด้วยเหตุผลที่กำลังจะพูดถึงในฟังก์ชันต่อไปนี่แหละครับ

mysql_fetch_array()
ฟังก์ชันนี้จะเป็นฟังก์ชันต่อเนื่องมาจาก mysql_query() ครับ แต่จะเป็นเฉพาะกรณีที่เราประมวลผลคำสั่ง SQL ตระกูล SELECT ครับ

<?php

mysql_connect("localhost", "root", "") or die ("ไม่สามารถเชื่อมต่อกับฐานข้อมูลได้"); //ทำการเชื่อมต่อกับฐานข้อมูล
mysql_select_db("company") or die ("ไม่สามารถเลือกใช้ฐานข้อมูลนี้ได้"); //เลือกใช้ฐานข้อมูลชื่อ company
$sql = "SELECT * FROM employee"; //SQL statement.
$result = mysql_query($sql); //ประมวลผลคำสั่ง SQL
while ($array = mysql_fetch_array($result)) { //วนลูปเพื่อแสดงข้อมูลจนครบทุกระเบียน โดยเก็บข้อมูลไว้ในตัวแปร $array ซึ่งเป็นตัวแปรอะเรย์

echo $array['name']. "<br>"; //แสดงข้อมูลในฟิลด์ชื่อ name ออกมา

}

?>

ผลลัพธ์ที่เราจะได้ก็คือ

Meeboon Boonlonluer

ซึ่งก็คือค่าที่เก็บไว้ในฟิลด์ name ของระเบียนที่เราแทรกเข้าไปนั่นเองครับ...

จริงๆ แล้วโค้ดที่แสดงให้เห็นนี้ จะเป็นการดึงข้อมูลทุกระเบียนมา แล้วทำการวนลูปแสดงข้อมูลในฟิลด์ name ของทุกระเบียนออกมาทีละบรรทัดครับ

สังเกตว่าเราใช้ตัวแปรอะเรย์ชื่อ $array ทำการเก็บค่าที่ return มาได้จากฟังก์ชัน mysql_fetch_array() แล้วทำการวนลูปตราบเท่าที่ยังมีการ return ค่ามาจากฟังก์ชัน โดยแสดงเฉพาะค่าอะเรย์ที่มี index ชื่อ name (ซึ่งก็คือ ฟิลด์ชื่อ name นั่นเอง)

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

<?php

mysql_connect("localhost", "root", "") or die ("ไม่สามารถเชื่อมต่อกับฐานข้อมูลได้"); //ทำการเชื่อมต่อกับฐานข้อมูล
mysql_select_db("company") or die ("ไม่สามารถเลือกใช้ฐานข้อมูลนี้ได้"); //เลือกใช้ฐานข้อมูลชื่อ company
$sql = "SELECT * FROM employee"; //SQL statement.
$result = mysql_query($sql); //ประมวลผลคำสั่ง SQL
while ($array = mysql_fetch_array($result)) { //วนลูปเพื่อแสดงข้อมูลจนครบทุกระเบียน โดยเก็บข้อมูลไว้ในตัวแปร $array ซึ่งเป็นตัวแปรอะเรย์

echo $array[0]. "<br>"; //แสดงข้อมูลในฟิลด์ชื่อ name ออกมา

}

?>

ผลลัพธ์ที่ได้ ก็ยังคงเหมือนเดิมครับ... (จำเอาไว้ให้ขึ้นใจอีกอย่างก็คือ index นั้น จะเริ่มจาก 0 ไปเรื่อยๆ ครับ)

แถมท้ายนิดนึงนะครับ... เกิดข้อมูลเรามีมากกว่า 1 ระเบียน แต่เวลาที่เราเรียกใช้ฟังก์ชัน mysql_fetch_array() เรากลับไม่ยอมทำการวนลูป ผลที่ได้คือ เราจะได้ระเบียนแรกสุดที่ประมวลผลได้มาแทนครับ... สรุปง่ายๆ คือ ผลลัพธ์ที่ได้ก็จะเหมือนกันการประมวลผลคำสั่ง SELECT โดยมีเงื่อนไขว่า LIMIT 0, 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