PHP での MySQL 関数から PDO への移行
PHP の MySQL 関数は非推奨となり、最終的には削除される予定です。 将来の互換性を確保し、強化されたセキュリティと機能を活用するには、開発者は堅牢なオブジェクト指向データベース アクセス層である PHP データ オブジェクト (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 は、準備されたステートメントを利用して効率的かつ安全なクエリを実行します。 変数をバインドする方法は次のとおりです:
名前付きパラメータ:
<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 サイトの他の関連記事を参照してください。