ホームページ  >  記事  >  バックエンド開発  >  php_PHP チュートリアルにおけるデータベース接続メソッド pdo と mysqli の比較分析

php_PHP チュートリアルにおけるデータベース接続メソッド pdo と mysqli の比較分析

WBOY
WBOYオリジナル
2016-07-13 10:06:24815ブラウズ

phpでのデータベース接続方法pdoとmysqliの比較分析

この記事は主にphpでのデータベース接続方法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 について新たに理解できましたか? この記事が皆様のお役に立てれば幸いです。

http://www.bkjia.com/PHPjc/960577.html

www.bkjia.com本当http://www.bkjia.com/PHPjc/960577.html技術記事 php におけるデータベース接続方法 pdo と mysqli の比較分析 この記事では主に php におけるデータベース接続方法 pdo と mysqli の比較分析をあらゆる面から紹介しています...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。