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 について新たに理解できましたか? この記事が皆様のお役に立てれば幸いです。
http://www.bkjia.com/PHPjc/960716.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/960716.html技術記事データベース接続方法の比較分析 pdo と mysqli in php、pdomysqli 1) 一般的な比較 PDO MySQLi データベースは 12 の異なるデータベースをサポート MySQL API OOP OOP + プロセスをサポート 接続...