Web 開発において、データベースは非常に重要なコンポーネントです。他のプログラミング言語と同様、PHP 言語にもデータベースを操作するためのさまざまな方法があります。その中でも、PDO (PHP Data Object) は、PHP でデータベースを操作する一般的な方法の 1 つであり、さまざまなデータベース システムにアクセスするための統合された、シンプル、柔軟かつ安全な方法を提供します。この記事では、PHP が PDO を使用してデータベースを操作する方法を紹介します。
1. PDO の利点
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 は、追加、削除、変更、およびクエリ操作を実装します
データベースに接続した後、次のことを実行できます。データベースに対する追加、削除、変更、およびクエリ操作。一般的に使用される操作には、データの挿入、データの更新、データの削除、データのクエリが含まれます。
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() メソッドを呼び出してクエリをデータベースに送信します。
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() メソッドを呼び出してクエリをデータベースに送信します。
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() メソッドを呼び出してクエリをデータベースに送信します。
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 インジェクション攻撃を回避できます。
以上がPHP が PDO を使用してデータベースを操作する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。