ホームページ > バックエンド開発 > PHPの問題 > phpは追加と削除にpdoを使用します

phpは追加と削除にpdoを使用します

王林
リリース: 2023-05-28 21:30:38
オリジナル
703 人が閲覧しました

変更操作の詳細説明

PHP はネットワーク分野で非常に人気のあるスクリプト言語です。PHP では、データの保存、クエリ、更新などの操作を完了するためにデータベースと対話する必要がよくあります。データ操作では、現在、mysqli と PDO が最も一般的に使用されています。この記事では、PDO (PHP データ オブジェクト) の使用法と、PDO を使用してデータを追加、削除、変更、クエリする方法を中心に説明します。

  1. 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; はデータベースに接続するホスト アドレスを表します。

  1. データ クエリ操作に PDO を使用する

データ クエリ操作に 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 には、クエリ結果を取得するための次の方法が用意されています:

  • fetch(): クエリ結果を行ごとに取得し、毎回 1 行のデータを返します;
  • fetchAll(): 結果セット全体を取得し、すべての結果行を含む 2 次元配列を返します;
  • fetchColumn(): 結果セット内の指定された列の値を取得します;
  • rowCount(): クエリ結果の合計行数を返します。

以下はクエリ結果を取得するサンプル コードです:

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(): 準備されたステートメントのパラメータに変数をバインドします;
  • bindValue(): バインド値準備されたステートメント;
  • execute(): PDOStatement オブジェクトを実行します。

以下は、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 インジェクションの脆弱性を回避できます。

  1. PDO を使用してデータの追加、削除、および変更を行う

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,从而完成了参数绑定的操作。

  1. 总结

通过本文的学习,我们了解了如何使用PDO进行MySQL数据库的连接、查询、数据添加、删除和修改等操作。在使用PDO进行操作时,我们需要使用prepare()方法创建一个预处理的SQL语句,并使用bindParam()方法对该语句中的动态参数进行绑定。这样,在使用execute()方法执行语句时,我们就可以避免SQL注入漏洞的发生,使数据操作更加安全可靠。

以上がphpは追加と削除にpdoを使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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