ホームページ > バックエンド開発 > PHPチュートリアル > MySQL 関数から PDO に移行する必要があるのはなぜですか?

MySQL 関数から PDO に移行する必要があるのはなぜですか?

Patricia Arquette
リリース: 2024-11-11 05:29:03
オリジナル
281 人が閲覧しました

Why Should I Migrate from MySQL Functions to PDO?

MySQL 関数から PDO に移行する方法

概要

PHP 5.5.0 としてMySQL 関数の非推奨を示すものであるため、データベース操作には PDO や MySQLi などの代替関数に移行することが不可欠です。この記事では、コードを PDO に移行するためのガイドを提供し、MySQL サーバーと MSSQL サーバーの両方をカバーしています。

MySQL 関数が廃止される理由

MySQL 関数は古く、セキュリティの危険性が高い脆弱性が存在するため、最新の PHP アプリケーションには適していません。便利な機能が欠けており、安全に適用するのが困難です。 PDO と MySQLI はこれらの問題に対処し、大幅な改善を提供します。

PDO を使用した MySQL への接続

  1. PHP モジュール php_pdo_mysql.dll は必須。
  2. DSN (データ ソース名):

    • $dsn = 'mysql:dbname=databasename;host を使用して PDO インスタンスを作成します。 =127.0.0.1';
    • $dbh = new PDO($dsn, $user, $password);

を使用して MSSQL に接続していますPDO

  1. php_pdo_sqlsrv_##_ts.dll または php_pdo_sqlsrv_##_nts.dll ドライバーをインストールします。
  2. DSN (データ ソース名):

    • $dsn = 'sqlsrv:Server=127.0.0.1;Database=databasename';
    • $dbh = new PDO($dsn, $user, $password);

準備されたステートメントを使用したクエリの実行

PDO SQL クエリに挿入されたユーザー入力をサニタイズすることで SQL インジェクションを防止するプリペアド ステートメントを使用します。ステートメントを準備するには:

  1. ->prepare() を使用して、準備されたステートメントを作成します。

      $SQL = 'SELECTユーザーからの ID、電子メール WHERE user = :username';
    • $stmt = $dbh->prepare($SQL);
  2. バインド パラメーター( s)

    ->bindValue():

      $stmt->bindValue(':username', $username);
クエリの実行

    何も渡さずに
  1. ->execute()

    を使用して準備されたステートメントを実行します引数:

    $stmt->execute();
  2. 直接クエリの場合は、
  3. ->query()

    :

    $result = $dbh->query($SQL);
結果の取得

fetch()

は、結果セットから 1 つの行をフェッチします。 fetchAll() は、すべての行を配列にフェッチします。

PDO のサンプル クラス

class pdoConnection {
    // ...
    public function prepare($SQL, $params = array()) {
        $result = $this->connection->prepare($SQL);
        $result->execute($params);
        return $result;
    }
}

// Usage:
$SQL = 'SELECT ID, EMAIL FROM users WHERE user = :username';
$result = $db->prepare($SQL, array(":username" => 'someone'));
ログイン後にコピー
結論

MySQL 関数から PDO に移行するには、コードの変更が必要ですが、データベースのセキュリティが大幅に向上し、アプリケーションが将来の PHP バージョンに対応できるようになります。提供されているコード サンプルとサンプル クラスは、スムーズな移行に役立ちます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート