1. 程式人生 > >php 7連線mysql資料庫

php 7連線mysql資料庫

   PHP 5 的使用者可以使用 mysql extension,mysqli 和 PDO_MYSQL 。PHP 7移除了mysql extension,只剩下後面兩種選擇.

   這份文件解釋了每個API 的術語,幫助我們如何使用API 和了解相關API的資訊。

  PHP 提供了三種不同的API去連線mysql資料庫。下面的示例程式碼展示了3種不同連線mysql資料庫的方式。

/*
 * mysqli
 * 資料庫地址,登陸賬號,密碼,資料庫名稱
 */
    $mysqli = new mysqli("localhost", "root", "", "student");
    $sql = "SELECT * FROM tb_user";
    $result = $mysqli->query($sql);
    $row = $result->fetch_assoc(); // 從結果集中取得一行作為關聯陣列
    echo $row["password"];
    /* free result set */
    $result->free();

    /* close connection */
    $mysqli->close();

    /*
     * 第一個引數是mysql:host,第二是dbname,第三個賬戶名,第四個密碼
     */
    try {
        $pdo = new PDO("mysql:host=localhost;dbname=student", "root", "");
    } catch (PDOException $e) {
        echo 'Connection failed: ' . $e->getMessage();
    }
    $sql = "select * from tb_user";
    echo $sql . "<BR>";
    $pdo->query('set names utf8;');
    $result = $pdo->query($sql);
    $rows = $result->fetchAll();
    foreach ($rows as $row) {
        $username = $row[1];
        $pwd = $row[2];
        echo $username;
    }


我們推薦使用mysqli或者PDO_Mysql拓展,不推薦在新開發中使用老的mysql拓展,因為它在PHP5.5.0中不再使用並且在PHP7.0中被移除。

設定編碼很重要,是utf8而不是uft-8

$conn->set_charset("utf8");
或者這樣也可以
$conn->query("set names utf8;");
<pre style="font-family: 'DejaVu Sans Mono'; font-size: 15pt; background-color: rgb(255, 255, 255);">

概念:

有快取和沒有快取的查詢

查詢預設使用有快取的查詢。這意味著查詢結果馬上從Mysql伺服器傳送到PHP,然後被儲存在php解析器記憶體中。這允許額外的操作像計算行數,移動或者尋找當前的結果指標。它也允許在同樣的連線和結果集上進一步查詢。快取模式不好的一面是大的結果集可能需要很大的記憶體,這些記憶體一直佔用直到結果集被清除或者被釋放,這是在請求結束自動進行的。術語儲存結果就是用來表示快取模式,所有結果集馬上被儲存。

沒有快取的Mysql查詢被執行,馬上返回一個資源,資料一直等待mysql伺服器被連接獲取。這是用了更少的記憶體在php一方,但這回增加伺服器的負載。直到所有的結果集從伺服器被取走且沒有傳送建立在同一個連線上的查詢。沒有快取的查詢也被稱為使用結果。

從這些特性可以看出,快取查詢用在當你只希望得到一個有限的結果集和或者在讀取結果集前知道返回結果集的行數。沒有快取的查詢模式用在當你要返回大量的資料。

因為預設是快取查詢模式,下面的例子將會驗證如何去執行沒有快取的查詢API。

<?php
$mysqli  = new mysqli("localhost", "my_user", "my_password", "world");
$uresult = $mysqli->query("SELECT Name FROM City", MYSQLI_USE_RESULT);

if ($uresult) {
   while ($row = $uresult->fetch_assoc()) {
       echo $row['Name'] . PHP_EOL;
   }
}
$uresult->close();
?>