日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

php pdo mysql哪个好_php pdo和mysqli对比选择

發布時間:2023/12/15 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php pdo mysql哪个好_php pdo和mysqli对比选择 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1)總的比較

PDO

MySQLi

數據庫支持

12種不同的數據庫支持

支持MySQL

API

OOP

OOP +?過程

Connection

Easy

Easy

命名參數

支持

不支持

對象映射支持

支持

支持

預處理語句

(客戶端)

支持

不支持

性能

支持存儲過程

支持

支持

2 連接方式

先來看下兩者連接數據庫的方式:

//PDO

$pdo = new PDO("mysql:host=localhost;dbname=database", 'username', 'password');//mysqli, 面向過程方式

$mysqli = mysqli_connect('localhost','username','password','database');//mysqli, 面向對象

$mysqli = new mysqli('localhost','username','password','database');

3 數據庫支持

PDO支持多種數據庫,但MYSQLI只支持MYSQL

4 命名參數name parameter

PDO的方式:

$params = array(':username' => 'test', ':email' => $mail, ':last_login' => time() - 3600);$pdo->prepare('SELECT * FROM users

WHERE username = :username

AND email = :email

AND last_login > :last_login');

而MYSQLI則麻煩點,不支持這樣,只能:

$query = $mysqli->prepare('SELECT * FROM users

WHERE username = ?

AND email = ?

AND last_login > ?');$query->bind_param('sss', 'test', $mail, time() - 3600);$query->execute();

這樣的話,一個個對問號的順序,也比較麻煩,不大方便。

5 ORM映射的支持

比如有個類user,如下:

classUser

{public $id;public $first_name;public $last_name;public functioninfo()

{return '#' . $this->id . ': ' . $this->first_name . ' ' . $this->last_name;

}

}$query = "SELECT id, first_name, last_name FROM users";//PDO

$result = $pdo->query($query);$result->setFetchMode(PDO::FETCH_CLASS, 'User');while ($user = $result->fetch())

{echo $user->info() . "\n";

}

MYSQLI用面向過程的方式:

if ($result = mysqli_query($mysqli, $query)) {while ($user = mysqli_fetch_object($result, 'User')) {echo $user->info()."\n";

}

}

MYSQLI采用面向過程的方式:

//MySQLi, object oriented way

if ($result = $mysqli->query($query)) {while ($user = $result->fetch_object('User')) {echo $user->info()."\n";

}

}

6 防止SQL注入方面:

PDO 手工設置

$username = PDO::quote($_GET['username']);$pdo->query("SELECT * FROM users WHERE username = $username");

使用mysqli

$username = mysqli_real_escape_string($_GET['username']);$mysqli->query("SELECT * FROM users WHERE username = '$username'");

7 preparestament

PDO方式:

$pdo->prepare('SELECT * FROM users WHERE username = :username');$pdo->execute(array(':username' => $_GET['username']));

MYSQLI:

$query = $mysqli->prepare('SELECT * FROM users WHERE username = ?');$query->bind_param('s', $_GET['username']);$query->execute();

總結

以上是生活随笔為你收集整理的php pdo mysql哪个好_php pdo和mysqli对比选择的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。