変更操作の詳細説明
PHP はネットワーク分野で非常に人気のあるスクリプト言語です。PHP では、データの保存、クエリ、更新などの操作を完了するためにデータベースと対話する必要がよくあります。データ操作では、現在、mysqli と PDO が最も一般的に使用されています。この記事では、PDO (PHP データ オブジェクト) の使用法と、PDO を使用してデータを追加、削除、変更、クエリする方法を中心に説明します。
PDO は、PHP 5.1 で導入された軽量で一貫性のあるオブジェクト指向のデータ アクセス層処理メソッドであり、さまざまなデータにアクセスするための統合 API を提供します。リレーショナル データベース。 PDO を使用してデータベースに接続すると、特定のデータベース ドライバー オブジェクトが提供され、さまざまな種類のデータベースと最大限の互換性が得られます。データベースを変更する必要がある場合、他のデータベース操作インターフェイスを変更することなく、データベース ドライバーのみを変更する必要があります。
PDO をデータベース操作に使用する前に、最初にデータベース接続操作を実行する必要があります。PDO はデータベースに接続するためのより簡単な方法を提供します:
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
上記のコードを通じて、PDO を作成できますtest という名前の MySQL データベースに接続されている $dbh という名前のオブジェクト。 $user と $pass はデータベースのユーザー名とパスワードで、mysql:host=localhost; はデータベースに接続するホスト アドレスを表します。
データ クエリ操作に PDO を使用する場合は、まず PDO オブジェクトを通じてクエリ ステートメントを作成し、結果をファイルに保存する必要があります。変数で。 PDO はプリコンパイルされたクエリ ステートメントをサポートしているため、クエリの効率が大幅に向上し、SQL インジェクション攻撃を回避できます。
2.1 クエリ操作
PDO では、まず SQL クエリ ステートメントを準備して実行する必要があります。
$sql = "SELECT * FROM users WHERE username=:username"; $stmt = $dbh->prepare($sql); $stmt->bindParam(':username', $username); $stmt->execute();
上記のコードでは、パラメーター username を次のようにバインドします。変数 $username の値はクエリ ステートメントにバインドされているため、SQL インジェクションの脆弱性が回避されます。
2.2 クエリ結果の取得
クエリ ステートメントが正常に実行された後、実行結果を取得する必要があります。PDO には、クエリ結果を取得するための次の方法が用意されています:
以下はクエリ結果を取得するサンプル コードです:
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo "username: " . $row['username'] . " "; echo "email: " . $row['email'] . " "; }
上記のサンプル コードでは、while ループを通じてクエリ結果セットを走査し、それぞれ 1 行のデータを返します。 time、echo ステートメントは、データの各行のユーザー名と電子メールの列に対応する値を出力します。
2.3 パラメータのバインド
PDO を使用してプリコンパイルされたクエリを実行する場合、SQL インジェクションの脆弱性を回避するために、クエリ ステートメント内の動的パラメータを変数にバインドする必要があります。 PDO は、パラメータ バインドの次のメソッドをサポートします:
以下は、bindParam() メソッドを使用したパラメータ バインドのサンプル コードです。
$stmt = $dbh->prepare("SELECT * FROM users WHERE username=:username AND email=:email"); $stmt->bindParam(':username', $username); $stmt->bindParam(':email', $email); $stmt->execute();
上記のサンプル コードでは、bindParam() メソッドを使用して $username と$email 変数はクエリ ステートメント内の対応するパラメータにバインドされ、クエリ操作はexecute() メソッドを通じて実行されます。このようにして、クエリ時の SQL インジェクションの脆弱性を回避できます。
PDO を使用してデータの追加、削除、および変更を行う場合は、対応する PDO オブジェクトを作成する必要があります。そして結果を変数に保存します。 PDO オブジェクトを通じてステートメントを実行する場合、PDO は入力データを自動的にエスケープし、実行前にプリコンパイルするため、SQL インジェクションの脆弱性が回避されます。
3.1 データ追加操作
PDO では、prepare() メソッドを使用して前処理された SQL ステートメントを作成し、execute() メソッドを使用してパラメーターをステートメントに渡します。以下は、PDO を使用してデータを追加するサンプル コードです:
// 准备SQL语句并绑定参数 $sql = "INSERT INTO `users` (`username`, `email`) VALUES (?, ?)"; $stmt = $dbh->prepare($sql); $stmt->bindParam(1, $username); $stmt->bindParam(2, $email); // 执行SQL语句,插入新的用户记录 $username = 'test_user'; $email = 'test_user@example.com'; $stmt->execute();
上記のコードでは、まず prepare() メソッドを通じて前処理された SQL ステートメントを作成し、bindParam() メソッドを使用して変数 $ を設定します。 username と $email は、ステートメント内の 2 つの疑問符プレースホルダーにバインドされており、それぞれ VALUES (?, ?)
? の 2 つの ? に対応します。 。最後に、execute() メソッドを通じて SQL ステートメントが実行され、データの追加操作が完了します。
3.2 データ削除操作
PDO を使用してデータを削除する場合、prepare() メソッドを通じて前処理された SQL ステートメントを作成し、bindParam() メソッドを使用してバインドされたデータを削除する必要があります。この発言に対して。以下は、データ削除に PDO を使用するためのサンプル コードです。
// 准备SQL语句并绑定参数 $sql = "DELETE FROM `users` WHERE `username` = ?"; $stmt = $dbh->prepare($sql); $stmt->bindParam(1, $username); // 执行SQL语句,删除指定用户名的用户记录 $username = 'test_user'; $stmt->execute();
上記のサンプル コードでは、まず prepare() メソッドを通じて前処理された SQL ステートメントを作成し、データ削除操作を実行できるようにし、 bindParam() メソッドは、変数 $username を、WHERE username = ?
? のいずれかに対応するステートメント内の疑問符プレースホルダーにバインドします。 。最後に、execute() メソッドによって SQL ステートメントが実行され、データの削除操作が完了します。
3.3 データ変更操作
使用PDO进行数据修改时,我们需要通过prepare()方法创建一个预处理的SQL语句,并使用bindParam()方法将需要修改的数据绑定到该语句中。下面是使用PDO进行数据修改的示例代码:
// 准备SQL语句并绑定参数 $sql = "UPDATE `users` SET `email` = ? WHERE `username` = ?"; $stmt = $dbh->prepare($sql); $stmt->bindParam(1, $email); $stmt->bindParam(2, $username); // 执行SQL语句,更新指定用户名的用户记录 $username = 'test_user'; $email = 'new_test_user@example.com'; $stmt->execute();
在上述示例代码中,我们使用prepare()方法创建了一个预处理的SQL语句,并使用bindParam()方法将需要修改的参数绑定到该语句中。其中,使用了SET语句将用户记录中的email字段进行修改,并使用了WHERE语句将修改操作限制在了指定的用户上。在bindParam()方法中,我们通过1和2两个参数分别对应了email和username,从而完成了参数绑定的操作。
通过本文的学习,我们了解了如何使用PDO进行MySQL数据库的连接、查询、数据添加、删除和修改等操作。在使用PDO进行操作时,我们需要使用prepare()方法创建一个预处理的SQL语句,并使用bindParam()方法对该语句中的动态参数进行绑定。这样,在使用execute()方法执行语句时,我们就可以避免SQL注入漏洞的发生,使数据操作更加安全可靠。
以上がphpは追加と削除にpdoを使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。