ホームページ > バックエンド開発 > PHPチュートリアル > php におけるデータベース接続方式 pdo と mysqli の比較分析、pdomysqli_PHP チュートリアル

php におけるデータベース接続方式 pdo と mysqli の比較分析、pdomysqli_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:06:07
オリジナル
792 人が閲覧しました

php、pdomysqliにおけるpdoとmysqliのデータベース接続方法の比較分析

1) 全体的な比較

PDO MySQLi
データベースのサポート 12 の異なるデータベースをサポート MySQLをサポート
API おっと OOP + プロセス
接続 簡単 簡単
名前付きパラメータ サポート サポートされていません
オブジェクトマッピングのサポート サポート サポート
準備されたステートメント
(クライアント)
サポート サポートされていません
パフォーマンス 早い 早い
ストアドプロシージャをサポート サポート サポート

2 接続方法

まず、この 2 つがどのようにデータベースに接続するかを見てみましょう:

コードをコピーします コードは次のとおりです:

// PDO
$pdo = 新しい PDO("mysql:host=localhost;dbname=database", 'ユーザー名', 'パスワード'); // mysqli、プロセス指向のアプローチ
$mysqli = mysqli_connect('localhost','ユーザー名','パスワード','データベース'); // mysqli、オブジェクト指向
$mysqli = new mysqli('localhost','username','password','database');


3 データベースのサポート

PDO は複数のデータベースをサポートしますが、MYSQLI は MYSQL のみをサポートします


4 名前付きパラメータ名 パラメータ

PDO 方法:

コードをコピーします

コードは次のとおりです: $params = array(':username' => 'test', ':email' => $mail, ':last_login' => time() - 3600); $pdo->準備('
ユーザーから * を選択
WHERE ユーザー名 = :ユーザー名
AND メール = :メール
そして、last_login > :last_login');


しかし、MYSQLI はこれをサポートしていません:

コードをコピーします

コードは次のとおりです:

$query = $mysqli->prepare(' ユーザーから * を選択 WHERE ユーザー名 = ?
かつメール = ?
そして、last_login > ?');
$query->bind_param('sss', 'test', $mail, time() - 3600);
$query->execute();



この場合、疑問符の順番をいちいち整理するのは面倒で不便です。

5 ORMマッピングのサポート

たとえば、次のようなクラス ユーザーがあります:

コードをコピーします

コードは次のとおりです:

クラスユーザー { 公開 $id;
公開 $first_name;
公開 $last_name;
パブリック関数 info()
{
'#' を返します。 ': ' $this->last_name . }
}
$query = "ユーザーから ID、名、姓を選択";
// PDO
$result = $pdo->query($query);
$result->setFetchMode(PDO::FETCH_CLASS, 'ユーザー');
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、オブジェクト指向の方法 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の準備

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 の 2 つのリンク方法、PDO と mysqli について新たに理解できましたか? この記事が皆様のお役に立てれば幸いです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/960716.html技術記事データベース接続方法の比較分析 pdo と mysqli in php、pdomysqli 1) 一般的な比較 PDO MySQLi データベースは 12 の異なるデータベースをサポート MySQL API OOP OOP + プロセスをサポート 接続...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート