【連接數據庫】PHP7的連接數據庫的三種方法【原創】

使用原生PHP來連接MySQL的方法有MySQL庫、MySQLi庫以及PDO,由於PHP 7已經廢除MySQL庫,所以建議使用MySQLi和PDO。

連接MySQLi有兩種風格:
  • 面向對象風格(推薦)
  • 過程化風格

面向對象風格:
1
<?php
2
3
$mysqli = new mysqli('localhost', 'root', '123456', 'test_laravel');
4
5
if ($mysqli->connect_error) {
6
    die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
7
}
8
9
$result = $mysqli->query('select * from articles');
10
$row = $result->fetch_array(MYSQLI_ASSOC);
11
print_r($row);
12
13
// 關閉mysql連接
14
$mysqli->close();
15
運行:
Array
(
    [id] => 1
    [title] => My new title
    [body] => First Body
    [created_at] => 2017-05-22 11:10:20
    [updated_at] => 2017-05-22 11:30:58
    [published_at] => 2017-05-22 11:10:00
    [excerpt] =>
)


fetch_array方法如果不帶參數的話,則默認是MYSQLI_BOTH,輸出是這樣的:
1
(
2
    [0] => 1
3
    [id] => 1
4
    [1] => My new title
5
    [title] => My new title
6
    [2] => First Body
7
    [body] => First Body
8
    [3] => 2017-05-22 11:10:20
9
    [created_at] => 2017-05-22 11:10:20
10
    [4] => 2017-05-22 11:30:58
11
    [updated_at] => 2017-05-22 11:30:58
12
    [5] => 2017-05-22 11:10:00
13
    [published_at] => 2017-05-22 11:10:00
14
    [6] =>
15
    [excerpt] =>
16
)
也可以選擇MYSQLI_NUM
Array
(
    [0] => 1
    [1] => My new title
    [2] => First Body
    [3] => 2017-05-22 11:10:20
    [4] => 2017-05-22 11:30:58
    [5] => 2017-05-22 11:10:00
    [6] =>
)

一般來說,選擇MySQLI_ASSOC

面向過程化風格:
1
<?php
2
3
$mysqli = mysqli_connect('localhost', 'root', '123456', 'test_laravel');
4
5
if (mysqli_connect_error()) {
6
    die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
7
}
8
9
$result = mysqli_query($mysqli, 'select * from articles');
10
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
11
print_r($row);
12
13
// 關閉mysql連接
14
mysqli_close($mysqli);
15
運行和上面一致。

使用PDO連接mysql:
<?php

try {
    $PDO = new PDO('mysql:host=localhost;dbname=test_laravel', 'root', '123456');
    $result = $PDO->query('select * from articles');
    $row = $result->fetch(PDO::FETCH_ASSOC);
    print_r($row);

    // 關閉mysqi連接
    $PDO = null;
} catch (PDOException $e) {
    die('Connection failed: ' . $e->getMessage());
}


PDO的fetch方法不帶參數的話,默認是:PDO::FETCH_BOTH,也可以PDO::FETCH_NUM和PDO::FETCH_ASSOC等,一般來說選擇PDO::FETCH_ASSOC即可。

總結:使用PDO或者是MySQLi都是可以的,但網上更推薦使用PDO來連接數據庫,這是因爲PDO支持12種不同的數據庫驅動程序,而MySQLi只能支持MySQL,另外PDO的性能也更高。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章