PHPプリペアドステートメントの使い方

PHPではプリペアドステートメント機能を使ってSQLを実行することで、データベースのクエリ効率と安全性を向上させることができます。プリペアドステートメントを使用する一般的な手順を以下に説明します。

  1. データベース接続を作成します。まず、mysqliやPDOなどのデータベース拡張を使用してデータベース接続を作成します。
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

// 使用mysqli扩展创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 使用PDO扩展创建连接
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  1. プレースホルダー(?)をパラメータに設定したSQL文を実行するprepare()メソッドを使って、準備された文を準備します。
$sql = "SELECT * FROM users WHERE id = ?";

// 使用mysqli扩展准备预处理语句
$stmt = $conn->prepare($sql);

// 使用PDO扩展准备预处理语句
$stmt = $conn->prepare($sql);
  1. バインドパラメータ:SQL文にパラメータが含まれている場合は、bind_param()またはbindParam()メソッドを使用して、パラメータ値をプレースホルダーにバインドします。
$id = 1;

// 使用mysqli扩展绑定参数
$stmt->bind_param("i", $id);

// 使用PDO扩展绑定参数
$stmt->bindParam(1, $id);
  1. 执行预处理语句:使用execute()方法执行预处理语句。
// 使用mysqli扩展执行预处理语句
$stmt->execute();

// 使用PDO扩展执行预处理语句
$stmt->execute();
  1. 結果を取得する:必要に応じて fetch()、fetchAll() などのメソッドを使用して、クエリ結果を取得します。
// 使用mysqli扩展获取结果
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    // 处理每一行数据
}

// 使用PDO扩展获取结果
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $row) {
    // 处理每一行数据
}
  1. プリペアードステートメントとデータベース接続をクローズする:close()メソッドを使用して、プリペアードステートメントとデータベース接続をクローズします。
// 使用mysqli扩展关闭预处理语句和连接
$stmt->close();
$conn->close();

// 使用PDO扩展关闭预处理语句和连接
$stmt = null;
$conn = null;

上記のサンプルコードは、mysqliとPDO拡張の使用例に基づいていますのでご注意ください。使用されるデータベース拡張によって具体的な実装は異なりますが、基本的な手順や考え方は共通です。

bannerAds