Tag Archives: mysql_fetch_assoc() คืออะไร

ความแตกต่างระหว่าง mysql_fetch_array() กับ mysql_fetch_assoc()

25 ธ.ค.

สวัสดีครับเพื่อนๆ ชาว web dev ทุกท่าน ทั้งที่ตั้งใจเข้ามาเยี่ยมชมเว็บบล็อคแห่งนี้ หรือผู้ที่หลงทางเข้ามาแบบไม่รู้อิโหน่อิเหน่ โดยตั้งใจตัดข้อสงสัยบางอย่างเกี่ยวกับการใช้งาน php function บางตัว เช่นที่ผมกำลังจะนำเสนอในต่อไปนี้ครับ

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

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

และไอ้เจ้า php function ที่ผมจะมานำเสนอในวันนี้ก็คือ ความแตกต่างระหว่าง mysql_fetch_array() กับ mysql_fetch_assoc() ครับ แน่นอนว่าที่ผมจะบอกนี้มันไม่ใช่การใช้งานเพียงอย่างเดียวแน่นอนครับ มันต้องมีอะไรที่มากกว่านั้นแน่นอน..จะมีอะไรบ้างเราไปดูกันครับ

หน้าที่การทำงานของ Function mysql_fetch_array()

** ง่ายๆ ครับ ไม่มีอะไรมากแค่มันใช้ในการคืนค่าข้อมูลในฐานข้อมูลที่อยู่ในลักษณะเป็นแถวหรือว่าเป็น record ครับ โดยตัวแปรผลลัพท์ที่มันคืนค่ากลับคืนมานั้นจะอยู่รูปแบบของตัวแปรอาร์เรย์ครับ แต่พิเศษหน่อยก็คือ ค่าคีย์(Key) ของตัวแปรนั้นจะมีทั้งที่เป็นแบบ Index และก็เป็นชื่อของฟิลด์ที่เราได้ทำการเลือก Select ด้วยครับ ถ้าใครยังนึกภาพไม่ออกให้ดูโค๊ดตัวอย่างด้านล่างครับ ^^

<pre>
Array
(
    [0] => blogdescription
    [option_name] => blogdescription
    [1] => แค่เว็บเวิร์ดเพรสเว็บหนึ่ง
    [option_value] => แค่เว็บเวิร์ดเพรสเว็บหนึ่ง
)</pre>

mysql_fetch_array() คืออะไร

โดยค่าคีย์ที่คืนกลับมานั้นจะมี 0 และ 1 ครับ กับค่าคีย์ที่เป็นชื่อฟิลด์ที่เป็น option_name และ option_value ครับ

แต่ถ้าเราใช้ Function mysql_fetch_assoc() แทนแล้วล่ะก็มันก็จะทำงานคล้ายๆ กันกับ mysql_fetch_array() ครับ คือคืนค่าข้อมูลในฐานข้อมูลที่อยู่ในลักษณะเป็นแถวหรือว่าเป็น record ที่อยู่ในรูปแบบของอาร์เรย์ แต่ค่าคีย์(Key) ของตัวแปรนั้นจะมีแค่ชื่อฟิลด์ของคอลั่มที่เราได้ทำการเลือกตอน Select ครับ

<pre>Array
(
    [option_name] => blogdescription
    [option_value] => แค่เว็บเวิร์ดเพรสเว็บหนึ่ง
)</pre>

mysql_fetch_assoc() คืออะไร

ทีนี้เห็นความแตกต่างหรือยังครับว่า mysql_fetch_array() กับ mysql_fetch_assoc() ต่างกันอย่างไร โดยเวลาที่เราจะใช้ลูปในการแสดงผลตัวแปรในแต่ละแถวนั้น เราจะต้องทราบก่อนว่าเราจะวนให้มันแสดงแบบไหน จะใช้คีย์ที่เป็นชื่อฟิลด์เป็นหลักหรือว่าจะอ้างแบบ index 0..1..2..3.. แทน หรือว่าจะใช้ทั้งสองอันก็ได้ครับไม่ว่ากัน แต่ถ้า

  • ใช้คีย์ที่เป็นชื่อฟิลด์อย่างเดียวให้เลือก mysql_fetch_assoc() นะครับ
  • ใช้คีย์แบบ index ด้วย และก็ชื่อฟิลด์คอลั่มด้วยก็ให้ใช้ mysql_fetch_array() ครับ ^^

คำแนะนำในการเลือกใช้งานในแต่ละตัว

  • mysql_fetch_array() ใช้ทรัพยากรมากกว่า mysql_fetch_assoc() ครับ เช่น แรม หรือว่าเวลาในการประมวณผล
  • ถ้าท่านต้องการข้อมูลใดข้อมูลหนึ่งในตารางใดๆ แต่ไม่ใช่คอลั่มทั้งหมดหรือที่เรียกว่า SELECT * ให้เปลี่ยนเป็นใช้ SELECT column_name แทนนะครับ จะได้ประมวณผลได้เร็วขึ้น
  • ให้พิจารณาจากความต้องการเป็นหลักโดยสามารถดูเปรียบเทียบได้จากรูปภาพ 2 รูปด้านบนนะครับ ซึ่งผมได้ลองจับเวลาในการ Query ข้อมูลในตารางเดียวแต่เอาทุก record ตามเงื่อนไขที่เราตั้งไว้ โดยดูความแตกต่างว่าถ้าหากเราใช้ mysql_fetch_array() จะใช้เวลาในการประมวณผลเท่าไหร่ กับ mysql_fetch_assoc() จะใช้เวลาในการประมวณผลเท่าไหร่ครับ (ตัวเลขคิดเป็นวินาที ยิ่งน้อยยิ่งดีนะครับ^^)เพื่อทดสอบเล่นๆครับ ^^

ทีนี้เพื่อนๆ ก็น่าจะมองเห็นภาพแล้วนะครับว่า ความแตกต่างระหว่าง mysql_fetch_array() กับ mysql_fetch_assoc() มันเป็นอย่างไร และที่สำคัญนั้น เราต้องการแบบไหนเป็นหลักครับ สุดท้ายหวังว่าข้อมูลเล็กๆน้อยๆ นี้คงจะเป็นประโยชน์ให้แก่เพื่อนๆที่ทำ web ด้วย php นะครับ สำหรับวันนี้ขอตัวก่อนครับ..บาย….ๆๆๆๆ

%d bloggers like this: