• May 28, 2017

    มาใช้ mysqli แทน mysql แบบเดิม ใน php กันอย่างง่าย

    รูปแบบไม่มีอะไรมาก
    เริ่มต้น สร้างไฟล์ connect.php  สำหรับใช้ในการเชิ่อมต่อฐานข้อมูล mysql

    <?php
    // connect.php
    $db_config=array(
        "host"=>"localhost",  // กำหนด host
        "user"=>"root", // กำหนดชื่อ user
        "pass"=>"",   // กำหนดรหัสผ่าน
        "dbname"=>"test",  // กำหนดชื่อฐานข้อมูล
        "charset"=>"utf8"  // กำหนด charset
    );
    $mysqli = @new mysqli($db_config["host"], $db_config["user"], $db_config["pass"], $db_config["dbname"]);
    if(mysqli_connect_error()) {
        die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
        exit;
    }
    if(!$mysqli->set_charset($db_config["charset"])) { // เปลี่ยน charset เป้น utf8 พร้อมตรวจสอบการเปลี่ยน
    //    printf("Error loading character set utf8: %sn", $mysqli->error);  // ถ้าเปลี่ยนไม่ได้
    }else{
    //    printf("Current character set: %sn", $mysqli->character_set_name()); // ถ้าเปลี่ยนได้
    }
    //echo $mysqli->character_set_name();  // แสดง charset เอา comment ออก
    //echo 'Success... ' . $mysqli->host_info . "n";
    //$mysqli->close();
    ?>
    

    Ex.

    <?php
    include("connect.php");
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.min.css" />
        <title>Test mysqli 1</title>
    </head>
    <body>
     
        <div class="container">
           <br>
            <table class="table">
                <tr>
                    <th>#</th>
                    <th>Province</th>
                </tr>
    <?php
    $i=1;
    $q="
    SELECT * FROM province_th LIMIT 30
    ";
    $result = $mysqli->query($q); // ทำการ query คำสั่ง sql 
    $total=$result->num_rows;  // นับจำนวนถวที่แสดง ทั้งหมด
    while($rs=$result->fetch_object()){ // วนลูปแสดงข้อมูล
    ?>
                <tr>
                    <td><?=$i?></td>
                    <td><?=$rs->province_name?></td>
                </tr>
    <?php $i++; } ?>            
            </table>
        </div>    
       
    <?php
    $mysqli->close();
    ?>
    </body>
    </html>

    มาดูคำสั่งที่ใช้บ่อย
    $result = $mysqli->query($q) ทำการ query คำสั่ง sql
    $total=$result->num_rows; หาจำนวนแถวที่แสดงทั้งหมด
    $mysqli->close();  ปิดการเชิ่อมต่อ server database mysql

    การวนลูปแสดงข้อมูล มีให้เลือก 4 แบบ
    $result->fetch_assoc() ส่งค่ากลับมาแบบ array key เป็นชื่อ field

    $result->fetch_row()  ส่งค่ากลับมาแบบ array key เป็น index เริ่มที่ 0,1 ….

    $result->fetch_array()  ส่งค่าทั้งแบบ assoc และ row เขาว่าไม่น่าใช้ กินแรม

    $result->fetch_object() ส่งค่ากลับมาแบบ object
    เราจะใช้ตัวนี้เป็นหลัก เหตุผล
    เพราะเวลา เรียกใช้งาน ไม่ต้องใส่เครื่องหมาย ” ” เช่น $rs->province_name;
    ถ้าใช้แบบ array หรือ assoc เราอาจจะต้องพิมพ์ $rs[“province_name’] ส่วนใครจะ
    ถนัดแบบไหนเลือกได้

    http://www.thaicreate.com/php/php-mysql-mysqli.html

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

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

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

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

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

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

    ใช้ MySQLi (MySQL Improved Extension) สามารถดูเพิ่มเติมได้ที่ http://php.net/manual/en/book.mysqli.php
    ใช้ 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();
    }


เวอไนน์ไอคอร์ส

ประหยัดเวลากว่า 100 เท่า!






เวอไนน์เว็บไซต์⚡️
สร้างเว็บไซต์ ดูแลเว็บไซต์

Categories


Uncategorized