ホームページ > バックエンド開発 > PHPチュートリアル > PHP が PDO を使用してデータベースを操作する方法

PHP が PDO を使用してデータベースを操作する方法

王林
リリース: 2023-06-18 08:38:01
オリジナル
1546 人が閲覧しました

Web 開発において、データベースは非常に重要なコンポーネントです。他のプログラミング言語と同様、PHP 言語にもデータベースを操作するためのさまざまな方法があります。その中でも、PDO (PHP Data Object) は、PHP でデータベースを操作する一般的な方法の 1 つであり、さまざまなデータベース システムにアクセスするための統合された、シンプル、柔軟かつ安全な方法を提供します。この記事では、PHP が PDO を使用してデータベースを操作する方法を紹介します。

1. PDO の利点

PDO を使用してデータベースを操作する利点は次のとおりです:

  1. プログラムは強力な移植性を備えています。データベースの移植性が向上 データベースは強力であり、プログラムに大きな変更を加えることなく、さまざまなデータベース上で実行できます。
  2. 高セキュリティ: PDO はコマンド ライン パラメーターの処理をサポートし、SQL インジェクション攻撃を効果的に防止できます。
  3. オブジェクト指向: PDO はオブジェクト指向であり、OOP プログラミングをより便利にすることができます。
  4. 優れたパフォーマンス: PDO はプリペアド ステートメントとデータ バインディングをサポートしているため、クエリの効率が大幅に向上し、それによってプログラムのパフォーマンスが向上します。

2. PDO を使用してデータベースに接続する

PDO を使用してデータベースの操作を開始する前に、まずデータベースに接続する必要があります。データベースに接続するコードは次のとおりです。

//设置数据库连接信息
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'root';
$password = 'root';
$options = [
    //错误模式:在发生错误时抛出异常
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    //默认返回关联数组
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
];
//创建PDO对象
$pdo = new PDO($dsn, $username, $password, $options);
ログイン後にコピー

このうち、$dsn はデータベースの種類、ホスト名、データベース名などの情報を表し、$username はユーザー名、$password はパスワード、$options はデータベースの種類、ホスト名、データベース名などの情報を表します。エラーモードの設定、戻り値のデータ型などの設定。データベースに接続するときは、次のような他のオプションも設定できます:

$options = [
    //设置字符集
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
    //关闭持久连接
    PDO::ATTR_PERSISTENT => false,
    //设置超时时间
    PDO::ATTR_TIMEOUT => 10,
    //设置返回数据类型为对象
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
    // 禁用预处理语句的模拟
    PDO::ATTR_EMULATE_PREPARES => false,
];
ログイン後にコピー

3. PDO は、追加、削除、変更、およびクエリ操作を実装します

データベースに接続した後、次のことを実行できます。データベースに対する追加、削除、変更、およびクエリ操作。一般的に使用される操作には、データの挿入、データの更新、データの削除、データのクエリが含まれます。

  1. データの挿入

PDO を使用してデータベースにデータを挿入するコードは次のとおりです:

//插入数据
$sql = "INSERT INTO `users` (`name`,`age`,`email`) VALUES (:name,:age,:email)";
$name = 'Tom';
$age = 23;
$email = 'tom@example.com';
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':name', $name);
$stmt->bindValue(':age', $age);
$stmt->bindValue(':email', $email);
$stmt->execute();
ログイン後にコピー

このうち、$sql は SQL です。データを挿入するには、ステートメントを使用します。パラメーター バインド方法を使用すると、SQL インジェクション攻撃を回避できます。 bindValue() メソッドは、パラメータを指定された名前のプレースホルダーにバインドし、その後、execute() メソッドを呼び出してクエリをデータベースに送信します。

  1. データの更新

PDO を使用してデータを更新するコードは次のとおりです。

//更新数据
$sql = "UPDATE `users` SET `age` = :age WHERE `name` = :name";
$name = 'Tom';
$age = 24;
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':name', $name);
$stmt->bindValue(':age', $age);
$stmt->execute();
ログイン後にコピー

このうち、$sql はデータを更新する SQL 文です。データ、パラメータ バインディングを使用する 特定の方法で、SQL インジェクション攻撃を回避できます。 bindValue() メソッドは、パラメータを指定された名前のプレースホルダーにバインドし、その後、execute() メソッドを呼び出してクエリをデータベースに送信します。

  1. データの削除

PDO を使用してデータを削除するコードは次のとおりです。

//删除数据
$sql = "DELETE FROM `users` WHERE `name` = :name";
$name = 'Tom';
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':name', $name);
$stmt->execute()
ログイン後にコピー

このうち、$sql はデータを削除する SQL ステートメントです。 、パラメーター バインディングを使用する 特定の方法で SQL インジェクション攻撃を回避できます。 bindValue() メソッドは、パラメータを指定された名前のプレースホルダーにバインドし、その後、execute() メソッドを呼び出してクエリをデータベースに送信します。

  1. データのクエリ

PDO を使用してデータをクエリするコードは次のとおりです。

//查询数据
$sql = "SELECT * FROM `users` WHERE `age` > :age";
$age = 20;
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':age', $age);
$stmt->execute();
$rows = $stmt->fetchAll();
ログイン後にコピー

このうち、$sql はデータをクエリするための SQL ステートメントです。 、パラメーター バインディングを使用する 特定の方法で SQL インジェクション攻撃を回避できます。 bindValue() メソッドは、パラメータを指定された名前のプレースホルダーにバインドし、その後、execute() メソッドを呼び出してクエリをデータベースに送信します。 fetchAll() メソッドは、クエリ結果を多次元配列として返します。

PDO は、連想配列、数値配列、オブジェクトの 3 つのタイプの結果の取得をサポートしているため、結果をクエリするときは、フェッチ取得のタイプを設定する必要があります (例:

//查询并获取关联数组
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
 
//查询并获取数字数组
$rows = $stmt->fetchAll(PDO::FETCH_NUM);
 
//查询并获取对象数组
$rows = $stmt->fetchAll(PDO::FETCH_OBJ);
ログイン後にコピー

4)。 PDO の実装 トランザクション処理

PDO はトランザクション処理をサポートしており、beginTransaction()、commit()、および rollback() メソッドを使用してトランザクションの送信およびロールバック操作を実装できます。

try {
    //开启事务
    $pdo->beginTransaction();
    //执行增删改操作语句
    $pdo->exec($sql1);
    $pdo->exec($sql2);
    $pdo->exec($sql3);
    //提交事务
    $pdo->commit();
} catch (Exception $e) {
    //回滚事务
    $pdo->rollback();
}
ログイン後にコピー

以上は、PDO を使用してデータベースを操作するための基本的な説明です。PDO を使用してデータベースを操作する場合は、注意する必要があるいくつかの点があります。バインディングにより SQL インジェクション攻撃を回避できます。

    例外を簡単にキャッチできるように、PDO 例外のエラー モードを EXCEPTION に設定します。
  1. prepare() メソッドを使用して操作ステートメントを実行すると、結果セットをキャッシュしてクエリ効率を向上させることができます。
  2. 前処理されたステートメントとデータ バインディングにより、ステートメントの分析と最適化の繰り返し作業が回避され、クエリ効率が向上します。
  3. トランザクション処理を有効にすると、データの整合性と一貫性が保証されます。
  4. つまり、PDO を使用してデータベースを操作することは比較的便利で効果的な方法であり、Web アプリケーションに強力なデータベース アクセス機能を提供できます。

以上がPHP が PDO を使用してデータベースを操作する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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