ホームページ >データベース >mysql チュートリアル >非推奨の MySQL 関数から PDO for MySQL および MSSQL に移行するにはどうすればよいですか?

非推奨の MySQL 関数から PDO for MySQL および MSSQL に移行するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-10 09:33:42457ブラウズ

How to Migrate from Deprecated MySQL Functions to PDO for MySQL and MSSQL?

MySQL 関数を MySQL および MSSQL の PDO に変換します

MySQL 関数の非推奨と代替手段

MySQL 関数拡張機能は非推奨となっており、将来のリリースでは削除される予定です。代わりに、MySQLi または PDO_MySQL 拡張機能を使用することをお勧めします。 MySQLi と PDO は、MySQL 関数と比較してセキュリティと機能が向上しています。

PDO の実装

PDO (PHP Data Objects) は、データベースにアクセスするためのオブジェクト指向 API です。 PDO を使用してデータベースに接続するには、PDO コンストラクターを使用して新しい 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 を使用してクエリを実行します

PDO は準備されたステートメントを使用して SQL インジェクションの脆弱性を防ぎます。準備されたステートメントは、変数を表す名前付きまたはインデックス付きのプレースホルダーを使用して SQL クエリを定義します。

<code class="language-php">$SQL = 'SELECT ID, EMAIL FROM users WHERE user = :username';
$preparedStatement = $dbh->prepare($SQL);</code>

バインド変数

bindParam または bindValue を使用して、準備されたステートメントに値をバインドします。

<code class="language-php">$preparedStatement->bindParam(':username', $username);</code>

クエリを実行

準備されたステートメントを実行して結果を取得します。

<code class="language-php">$preparedStatement->execute();</code>

結果を取得する

PDO は、結果を配列として取得するための fetchfetchAll などのメソッドを提供します。

<code class="language-php">while ($row = $preparedStatement->fetch()) {
    echo $row['ID'];
    echo $row['EMAIL'];
}</code>

PDO 接続クラスを使用する

PDO 接続クラスを作成してデータベース操作を簡素化できます。

<code class="language-php">class Database {

    protected $connection;

    public function __construct($dsn, $user, $password) {
        $this->connection = new PDO($dsn, $user, $password);
    }

    public function query($SQL) {
        return $this->connection->query($SQL);
    }

    public function prepare($SQL, $params = []) {
        $preparedStatement = $this->connection->prepare($SQL);
        $preparedStatement->execute($params);
        return $preparedStatement;
    }

}

// 使用方法:
$db = new Database($dsn, $user, $password);

$SQL = 'SELECT ID, EMAIL FROM users WHERE user = :username';
$result = $db->prepare($SQL, ['username' => $username]);

while ($row = $result->fetch()) {
    echo $row['ID'];
    echo $row['EMAIL'];
}</code>

以上が非推奨の MySQL 関数から PDO for MySQL および MSSQL に移行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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