การระบุ Database ในคำสั่ง SELECT
เมื่อเรากำหนดชื่อ table ภายในคำสั่ง SELECT นั้น MySQL จะตรวจสอบ database ที่เราใช้งานอยู่ว่ามี table ที่ระบุมาหรือไม่ เช่น ถ้าเราใช้งาน database Employee อยู่ เมื่อเราต้องการดึงข้อมูลจากตาราง Person ใน database Employee จะต้องใช้คำสั่งดังนี้
# ในกรณีที่เราเลือกใช้งานฐานข้อมูล Employee อยู่ (โดยใช้คำสั่ง use Employee)
SELECT * FROM Person;
แต่ในกรณีที่เราไม่ได้เลือกใช้งาน database ตัวไหนเลย ผลลัพธ์ที่ได้จากคำสั่งด้านบนนั้นจะทำให้เกิด error ดังนี้
# ในกรณีที่เราไม่ได้เลือกใช้งานฐานข้อมูลตัวไหนอยู่เลย
SELECT * FROM Person;
ERROR 1046: No Database Selected
# รูปแบบ SELECT * FROM database_name.table_name
SELECT * FROM Employee.Person;
# เลือกใช้งานฐานข้อมูล Employee
USE Employee;
# ใช้คำสั่งเดิม โดยไม่ต้องระบุ database
SELECT * FROM Person;
ฟังก์ชันในการดึงข้อมูล (แสดงข้อมูล)
เราจะสามารถดึงข้อมูลมาได้ก็ต่อเมื่อเราทำการ query ไปยังฐานข้อมูล และมันคืนค่ากลับมาเป็น resource โดยใช้ฟังก์ชัน mysql_query() ที่ผมได้กล่าวไว้ในบทความที่แล้ว ซึ่งฟังก์ชันในการดึงข้อมูลจาก resource มีหลายตัวดังนี้
- mysql_fetch_row() จะคืนค่า row แบบ enumerated array (หรือแบบ [storng]index)
- mysql_fetch_object() จะคืนค่า row แบบ object
- mysql_fetch_array() จะคืนค่า row เป็น array ทั้งแบบ associative และแบบ index (หรือแบบ enumerated)
- mysql_fetch_assoc() จะคืนค่า row เป็น array แบบ associative เท่านั้น
- mysql_result() จะคืนค่าเพียง cell เดียวเท่านั้น
ความแตกต่างระหว่าง function ในการดึงข้อมูลใน 4 วิธีแรกนั้นแตกต่างกันเพียงนิดเดียวเท่านั้น ซึ่งผมจะยกตัวอย่างให้ผู้อ่านได้เข้าใจทีละวิธีนะครับ
วิธีการดึงข้อมูลแบบ mysql_fetch_row()
1.<?php
2.$query
= "SELECT person_id, name, surname FROM tbl_person";
3.$rs
= mysql_query($query);
4.while($row
= mysql_fetch_row($rs)) {
5. echo
"$row[0] $row[1] $row[2]<br />\n";
6.}
7.?>
จากตัวอย่างด้านบนนั้น เราจะสามารถเข้าถึงแต่ละ column (หรือ field) ได้โดยกำหนด key แบบ index เท่านั้น (โดย index แต่ละตัวจะเรียงตาม field ที่ถูกเลือกด้วยคำสั่ง query ดังนั้น index ที่ 0 จะแทน person_id, index ที่ 1 จะแทน name และ index ที่ 2 จะแทน surname)
วิธีการดึงข้อมูลแบบ mysql_fetch_assoc()
1.<?php
2.$query
=
"SELECT person_id, name, surname FROM tbl_person";
3.$rs
= mysql_query($query);
4.
while($row
= mysql_fetch_assoc($rs)) {
5.
echo $row[
'person_id'] .
" " . $row[
"name"] .
" " . $row[
'surname'] .
"<br />\n";
6.}
7.?>
ในการดึงข้อมูลโดยวิธีนี้นั้น เราสามารถเข้าถึงข้อมูลแต่ละ field แบบ associative เท่านั้น ซึ่ง key ของ array จะสร้างตามชื่อ field ที่เราได้เลือกไว้ในคำสั่ง query
วิธีการดึงข้อมูลแบบ mysql_fetch_array()
1.<?php
2.$query
=
"SELECT person_id, name, surname FROM tbl_person";
3.$rs
= mysql_query($query);
4.
while($row
= mysql_fetch_array($rs)) {
5.
echo $row[0] .
" " . $row[
'name'] .
" " . $row[2]<br />\n";
6.}
7.?>
ในการดึงข้อมูลโดยวิธีนี้ มันจะคืนค่ากลับมาเป็น array ทั้งแบบ associative และแบบ index เลย ดังนั้นเราสามารถเข้าถึงข้อมูลแต่ละ field ได้โดยการอ้าง key หรือกำหนด index ให้มันก็ได้
วิธีสุดท้ายที่แตกต่างจากวิธีอื่น ๆ ก็คือ mysql_result() โดยมันจะคืนค่าเพียง 1 cell เท่านั้น ดังนั้นเราจะต้องกำหนดแถวเรคอร์ด และ field ที่ต้องการดึงมาด้วย ดังนี้
1.<?php
2.$query
=
"SELECT count(*) FROM tbl_person";
3.$rs
= mysql_query($query);
4.$count_person
= mysql_result($rs, 0, 0);
5.?>
จากตัวอย่างจะเห็นว่า parameter ตัวแรกนั้นจะต้องกำหนดเป็น resource ที่ได้จากการ query ส่วน parameter ตัวที่ 2 จะต้องกำหนดแถวที่ต้องการดึงมา และ parameter ตัวที่ 3 จะต้องกำหนด field ที่ต้องการดึง โดยอาจจะกำหนดเป็น associative ก็ได้
ที่มา : http://www.stepcoding.com/hot/PHP/ฟังก์ชัน%20MySQL%20ใน%20PHP/ฟังก์ชันในการดึงข้อมูล%20(แสดงข้อมูล)/10-13-127.html
ไม่มีความคิดเห็น:
แสดงความคิดเห็น