เมื่อ PHP เตือน Deprecated MySQL Function จะเลิกใช้ MySQL Function แล้วนะ

wave

เมื่อ PHP เตือน Deprecated MySQL Function จะเลิกใช้ MySQL Function แล้วนะ

มานพ กองอุ่น 21 พ.ค. 2015 06:31:15 7,493

สวัสดีครับบทความนี้เราไปดูที่มาของคำเตือนเวลาเราเรียกใช้งานฟังก์ชั่น mysql_xxxxx และ ฟังก์ชั่นอื่นๆ แน่นอนครับว่า PHP เองได้มีการปรับปรุงอัพเดทฟังก์ชั่นและฟีเจอร์ต่างๆ ให้รองรับและเข้ากับเทคโนโลยีปัจจุบัน ดังนั้นการเขียนแบบเดิมจะถูกแจ้งเตือนใน PHP 5.5 ขึ้นไป เช่น

  • mysql_connect();
  • mysql_select_db();
  • mysql_query();
  • mysql_fetch_array();
  • และฟังก์ชั่นอื่นๆ ที่ขึ้นต้นด้วย mysql_

โอ้วบร๊ะเจ้า..ไร้ซึ่งเยื่อใยกันเลยทีเดียว จำใจจำจากเจ้าจำจร ไว้อาลัยแพ๊บครับ โปรแกรมที่เขียนขึ้นจะทำงานเป็นปกติไหมนะใน PHP 5.5 แนวทางคือควรปรับมาใช้ mysqli แทนซึ่งมีฟังก์ชั่นที่คล้ายกับตัวเดิมทำให้สามารถเรียนรู้ได้ง่าย

รายละเอียดฟีเจอร์ที่ได้มีการแจ้งเตือนปรับเปลี่ยนการเขียน โดยเป็นฟีเจอร์ที่เรียกได้ว่าเก่ามากๆ โดยจะแจ้งเตือนหากมีการเรียกใช้งาน สำหรับ เวอร์ชั่นนี้ได้มีการเตือนให้ปรับการเขียนบางฟีเจอร์ดังนี้

  1. MySQL Extension
  2. preg_replace()
  3. intl
  4. mcrypt

โดยสามารถดูรายละเอียดเพิ่มเติมได้ที่ http://php.net/manual/en/migration55.deprecated.php

อ้าวแล้วอย่างนี้จะติดต่อฐานข้อมูล MySQL ได้อย่างไรล่ะ ก็ยังคงทำได้อยู่นะครับ โดยทาง PHP มีให้เลือก 2 ทางคือ

  1. ใช้ MySQLi (MySQL Improved Extension) สามารถดูเพิ่มเติมได้ที่ http://php.net/manual/en/book.mysqli.php
  2. ใช้ PDO (PHP Data Object) สามารถดูเพิ่มเติมได้ที่ http://php.net/manual/en/ref.pdo-mysql.php

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

ตัวอย่างการเขียนการเชื่อมต่อ MySQL ด้วย PDO

try {
        $dbh = new PDO('mysql:host=xxx;port=xxx;dbname=xxx', 'xxx', 'xxx', array( PDO::ATTR_PERSISTENT => false));

        $stmt = $dbh->prepare("CALL getname()");

        // call the stored procedure
        $stmt->execute();

        echo "<B>outputting...</B><BR>";
        while ($rs = $stmt->fetch(PDO::FETCH_OBJ)) {
            echo "output: ".$rs->name."<BR>";
        }
        echo "<BR><B>".date("r")."</B>";
    
    } catch (PDOException $e) {
        print "Error!: " . $e->getMessage() . "<br/>";
        die();
    }

 และนี่ก็หวังว่าสำหรับเพื่อนๆ ที่กำลังจะเขียนโปรแกรมทำ Web Application ด้วยภาษา PHP ควรทำความเข้าใจก่อนลงมือเขียนโค๊ด ที่จะเลือกเขียนให้รองรับกับเทคโนโลยีใหม่ๆ หรือไม่ 

แนะนำหลักสูตรเรียนรู้การเขียนโปรแกรมภาษา PHP ด้วย PDO (PHP Data Object) ฟรี!

(อย่าลืมกรอกอีเมลล์เพื่อสมัครรับข้อมูลดีๆ ด้านล่างนะครับ)

ความคิดเห็น