ホームページ >データベース >mysql チュートリアル >非推奨の MySQL 関数から PDO for MySQL および 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 は、結果を配列として取得するための fetch
や fetchAll
などのメソッドを提供します。
<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 サイトの他の関連記事を参照してください。