ホームページ >データベース >mysql チュートリアル >MySQL 関数を PHP の PDO に置き換える必要があるのはなぜですか?

MySQL 関数を PHP の PDO に置き換える必要があるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-10 08:53:45745ブラウズ

Why Should I Replace MySQL Functions with PDO in PHP?

PHP での MySQL 関数から PDO への移行

PHP の MySQL 関数は非推奨となり、最終的には削除される予定です。 将来の互換性を確保し、強化されたセキュリティと機能を活用するには、開発者は堅牢なオブジェクト指向データベース アクセス層である PHP データ オブジェクト (PDO) に移行する必要があります。

PDO の利点:

  • 最新化: PDO は、時代遅れの MySQL 関数を現代的なアプローチに置き換えます。
  • データベース非依存性: PDO は、MySQL だけでなく、さまざまなデータベース システムに接続するための一貫したインターフェイスを提供します。これにより、データベースの切り替えが簡素化され、コードの移植性が向上します。
  • SQL インジェクションの防止: PDO のプリペアド ステートメントは、重大なセキュリティ上の懸念事項である SQL インジェクションの脆弱性を防ぐために非常に重要です。

PDO を使用したデータベースへの接続

MySQL 接続:

<code class="language-php">$dsn = 'mysql:dbname=databasename;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

$dbh = new PDO($dsn, $user, $password);</code>

MSSQL 接続:

<code class="language-php">$dsn = 'sqlsrv:Server=127.0.0.1;Database=databasename';
$user = 'dbuser';
$password = 'dbpass';

$dbh = new PDO($dsn, $user, $password);</code>

プリペアドステートメントを使用したクエリの実行

PDO は、準備されたステートメントを利用して効率的かつ安全なクエリを実行します。 変数をバインドする方法は次のとおりです:

名前付きパラメータ:

<code class="language-php">$statement = $dbh->prepare('SELECT * FROM users WHERE name = :username');
$statement->execute([':username' => 'example']);</code>

インデックス付きパラメータ:

<code class="language-php">$statement = $dbh->prepare('SELECT * FROM users WHERE name = ?');
$statement->execute(['example']);</code>

クエリ結果の取得

いくつかのメソッドにより結果の取得が容易になります:

  • fetch(): 単一行を配列として返します。
  • fetchAll(): すべての行を配列の配列として返します。
  • rowCount(): 影響を受ける行の数を提供します (INSERT、UPDATE、DELETE に役立ちます)。

PDO 接続クラスの例

コードの編成と再利用性を強化するには、カスタム PDO クラスを検討してください。

<code class="language-php">class MyPDO {
    public $dbh;

    public function __construct($dsn, $username, $password) {
        $this->dbh = new PDO($dsn, $username, $password);
        $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    public function query($sql) {
        return $this->dbh->query($sql);
    }

    public function prepare($sql) {
        return $this->dbh->prepare($sql);
    }
}

// Example Usage:
$mypdo = new MyPDO($dsn, $username, $password);
$stmt = $mypdo->prepare('SELECT * FROM users WHERE name = :name');
$stmt->execute([':name' => 'example']);
while ($row = $stmt->fetch()) {
    echo $row['name'];
}</code>

以上がMySQL 関数を PHP の PDO に置き換える必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。