ホームページ  >  記事  >  バックエンド開発  >  PHP による PDO 操作ガイド

PHP による PDO 操作ガイド

WBOY
WBOYオリジナル
2023-05-21 13:01:361440ブラウズ

PHP では、PDO を使用してデータベースを操作すると、コードのセキュリティと移植性が向上します。 PDO は、データベース アクセス用の統合インターフェイスを提供し、複数のデータベース タイプをサポートする PHP 拡張機能です。この記事ではPDOの基本的な使い方と注意点を紹介します。

1. データベースへの接続
PDO を使用してデータベースに接続するには、次のパラメータが必要です:

$dsn: データベース タイプ: host= ホスト名;dbname= データベース名
$username: ユーザー名
$password: パスワード
$options: オプションのパラメーター。文字セット、接続タイムアウトなど、データベースに接続するためのオプションを指定するために使用されます。

次は、MySQL データベースへの接続の例です:

$dsn = 'mysql:host=localhost;dbname=test;charset=utf8';
$username = ' root';
$password = '123456';
$options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);

try {

$pdo = new PDO($dsn, $username, $password, $options);

} catch (PDOException $e) {

die($e->getMessage());

}

2. SQL ステートメントの実行
PDO を使用して SQL ステートメントを実行するには、まず PDO の prepare メソッドを呼び出して SQL ステートメントを準備し、バインドする必要があります。 SQL ステートメント内の変数、パラメータに固定。次に、execute メソッドを呼び出して SQL ステートメントを実行します。

以下はデータベースへのクエリの例です:

$sql = 'SELECT id, name, age FROM users WHERE age > ?';
$stmt = $pdo- > prepare($sql);
$stmt->bindParam(1, $age);
$age = 18;
$stmt->execute();
$rows = $stmt ->fetchAll(PDO::FETCH_ASSOC);

この例では、SQL ステートメント内の変数は疑問符で置き換えられます。変数をパラメーターにバインドするときは、bindParam メソッドまたは bindingValue メソッドを使用する必要があります。 。

bindParam メソッドは、変数を参照によってパラメーターに渡します。つまり、変数の値が変更されると、パラメーターの値も変更されます。

bindValue メソッドは、変数の値をパラメーターにコピーします。つまり、変数の値が変更されても、パラメーターの値は変更されません。

3. トランザクション制御を使用する
データベース操作では、トランザクションは関連するデータベース操作のグループを指します。全体として、このグループの操作はすべて正常に実行されるか、すべてロールバックされます。 PDO の beginTransaction、commit、および rollBack メソッドは、トランザクション制御の実現に役立ちます。

以下はデータ挿入の例です:

try {

$pdo->beginTransaction();
$stmt = $pdo->prepare('INSERT INTO users (name, age) VALUES (:name, :age)');
$stmt->bindParam(':name', $name);
$stmt->bindParam(':age', $age);

$name = '张三';
$age = 20;
$stmt->execute();

$name = '李四';
$age = 22;
$stmt->execute();

$pdo->commit();

} catch (PDOException $e) {

$pdo->rollBack();
die($e->getMessage());

}

この例では、beginTransaction メソッドはトランザクションの開始を意味し、commit メソッドはトランザクションのコミットを意味し、rollBack メソッドはトランザクションのロールバックを意味します。

4. 注意事項
PDO を使用してデータベースを操作する場合は、次の点にも注意する必要があります:

  • PDO はデフォルトでは例外をスローしません。データベースに接続するときに ATTR_ERRMODE を指定する必要があります。ERRMODE_EXCEPTION の場合にのみ例外がスローされます。
  • PDO の prepare メソッドはパラメータを自動的にエスケープするため、手動でパラメータをエスケープする必要はありません。
  • PDO の fetchAll メソッドは、デフォルトで連想配列を返します。PDO::FETCH_NUM を使用すると数値インデックス配列を取得でき、PDO::FETCH_BOTH を使用すると数値インデックスと連想インデックスの両方を含む配列を取得できます。
  • MySQL データベースの場合、PDO が SQL ステートメントを実行するときに、シミュレートされたプリペアド ステートメントを使用する必要があります。これにより、SQL インジェクション攻撃を防ぐことができます。シミュレートされたプリペアド ステートメントを使用する場合、データベースに接続するときに ATTR_EMULATE_PREPARES を false に指定する必要があります。

要約すると、PDO を使用してデータベースを操作すると、コードのセキュリティと移植性が向上します。データベース運用時のセキュリティ上の問題を回避するには、上記の方法を組み合わせて、さらに考え、試行し、PDO をより有効に活用することができます。

以上がPHP による PDO 操作ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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