PHP は、Web 上での対話性とダイナミクスを可能にする、人気のあるオープン ソースのサーバーサイド スクリプト言語です。データベース操作を処理する場合、PHP は mysqli 拡張ライブラリを通じて豊富な操作関数を提供します。この記事では、PHP の mysqli 拡張ライブラリを使用してデータベース内のデータを変更する方法を説明します。
1. mysqli の概要
PHP の mysql 拡張機能とは異なり、mysqli 拡張機能インターフェイスは MySQL 4.1 以降のサポートを提供します。 mysqli 拡張機能は、PHP 5 のデフォルトの拡張機能です。PHP 7 以降、mysql 拡張機能は非推奨になりました。 mysqli 拡張機能は、より優れたパフォーマンス、より多くの機能、より優れたセキュリティを提供します。
2. Mysqli 変更ステートメント
PHP では、mysqli 変更ステートメントは mysqli_query() 関数を通じて実装する必要があります。この関数を使用する場合、接続オブジェクトと実行する SQL ステートメントの 2 つのパラメーターを渡す必要があります。例は次のとおりです。
<?php // 连接数据库 $mysqli = new mysqli('localhost', 'username', 'password', 'dbname'); // 检测连接是否成功 if ($mysqli->connect_errno) { die('连接数据库失败:' . $mysqli->connect_error); } // 执行SQL语句 $sql = "UPDATE users SET username='new_username' WHERE id=1"; if ($mysqli->query($sql) === true) { echo "修改成功"; } else { echo "修改失败"; } // 关闭数据库连接 $mysqli->close(); ?>
手順:
まず、mysqli クラスを使用して接続オブジェクトを作成します。接続が失敗すると、プログラムは例外をスローします。
次に、実行する SQL ステートメントを構築します。ここでは UPDATE ステートメントを使用して、テーブル内の ID 1 のユーザーのユーザー名を更新します。
次に、mysqli_query() 関数を呼び出して SQL ステートメントを実行します。この関数は、クエリが成功した場合は true を返し、それ以外の場合は false を返します。
最後に、データベース接続を閉じます。
3. SQL インジェクションの防止
mysqli 拡張機能を使用する場合、SQL インジェクション攻撃の問題に注意する必要があります。 SQL インジェクション攻撃は、データベース アプリケーションをターゲットとしたネットワーク攻撃であり、悪意のある SQL コードを挿入することで、アプリケーションをだまして攻撃者が予期するアクションを実行させるために使用されます。 SQL インジェクションを防ぐには、次の措置を講じることができます:
1. mysqli_prepare() 関数
mysqli_prepare() 関数を使用して SQL ステートメントを準備し、ステートメント処理オブジェクトを返します。これにより、準備された SQL ステートメントが実行され、リクエストの送信とレスポンスの受信の間でバインドを行うことができます。
例は次のとおりです:
<?php // 连接数据库 $mysqli = new mysqli('localhost', 'username', 'password', 'dbname'); // 检测连接是否成功 if ($mysqli->connect_errno) { die('连接数据库失败:' . $mysqli->connect_error); } // 准备SQL语句 $stmt = $mysqli->prepare("UPDATE users SET username=? WHERE id=?"); // 绑定参数 $username = 'new_username'; $id = 1; $stmt->bind_param("si", $username, $id); // 执行SQL语句 if ($stmt->execute()) { echo "修改成功"; } else { echo "修改失败"; } // 关闭数据库连接 $mysqli->close(); ?>
上記の例では、mysqli_prepare() 関数を使用して SQL ステートメントを準備し、パラメーターをステートメントにバインドし、最後に実行メソッドを呼び出します。 () メソッド SQL ステートメントを実行します。
2. mysqli_real_escape_string() 関数を使用する
mysqli_real_escape_string() 関数は、SQL インジェクション攻撃を回避するために文字列内の特殊文字をエスケープできます。
例は次のとおりです:
<?php // 连接数据库 $mysqli = new mysqli('localhost', 'username', 'password', 'dbname'); // 检测连接是否成功 if ($mysqli->connect_errno) { die('连接数据库失败:' . $mysqli->connect_error); } // 处理传递过来的参数 $username = mysqli_real_escape_string($mysqli, $_POST['username']); $id = mysqli_real_escape_string($mysqli, $_POST['id']); // 构建SQL语句 $sql = "UPDATE users SET username='$username' WHERE id='$id'"; // 执行SQL语句 if ($mysqli->query($sql) === true) { echo "修改成功"; } else { echo "修改失败"; } // 关闭数据库连接 $mysqli->close(); ?>
上記の例では、まず mysqli_real_escape_string() 関数を使用して渡されたパラメーターをエスケープし、次に SQL ステートメントを構築します。
4. 概要
この記事では、PHP で mysqli 拡張ライブラリを使用してデータベース ステートメントを変更する方法を紹介しました。 mysqli_query() 関数を使用して SQL ステートメントを実行する方法を検討し、SQL インジェクション攻撃を防ぐ方法について説明しました。この記事がお役に立てば幸いです。
以上がphp mysqliステートメントを使用してデータベースを変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。