現在の位置: ホーム> 最新記事一覧> MySQLI :: STMT_INIT関数を使用してSQL Preprocessingステートメントを準備および実行する方法は?

MySQLI :: STMT_INIT関数を使用してSQL Preprocessingステートメントを準備および実行する方法は?

M66 2025-06-26

PHPでは、MySQLI拡張機能を使用すると、データベースに接続してクエリを実行できます。セキュリティを改善し、SQL注入を防ぐために、MySQLIは準備されたステートメントを提供します。この記事では、 MySQLI :: STMT_INIT関数を使用してSQL Preprocessingステートメントを準備および実行する方法について説明します。

前処理ステートメントとは何ですか?

前処理ステートメントは、データベース相互作用の方法です。 SQLステートメントをデータから分離し、最初にSQLクエリのテンプレートをデータベースに送信し、次にパラメーターをクエリにバインドできます。そうすることで、SQLインジェクション攻撃を防ぎ、セキュリティを改善できます。

mysqliの紹介:: stmt_init関数

mysqli :: stmt_initは、新しい前処理ステートメントの初期化に使用されるMySqliクラスのメソッドです。パラメーターをバインドしてSQLクエリを実行するために使用できるMySQLI_STMTオブジェクトを返します。

SQLの前処理ステートメントを準備および実行する手順

MySQLI :: STMT_INIT関数を使用して、SQL前処理ステートメントを準備および実行する手順を次に示します。

1.データベース接続を作成します

まず、MySQLデータベースに接続する必要があります。 MySQLIクラスを使用して、データベース接続を作成できます。

 <?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";

// 接続を作成します
$conn = new mysqli($servername, $username, $password, $dbname);

// 接続を確認してください
if ($conn->connect_error) {
    die("接続に失敗しました: " . $conn->connect_error);
}
?>

2。前処理ステートメントを初期化します

mysqli :: stmt_init関数を使用して、新しい前処理ステートメントオブジェクトを初期化します。このオブジェクトは、パラメーターをバインドし、SQLクエリを実行するために使用されます。

 <?php
// 前処理ステートメントを初期化します
$stmt = $conn->stmt_init();

// 初期化が成功したかどうかを確認してください
if (!$stmt) {
    die("前処理ステートメントの初期化に失敗しました: " . $conn->error);
}
?>

3.SQLクエリを準備します

準備方法を使用して、SQLクエリステートメントを準備します。 Simple Selectクエリを実行し、データベースからユーザー情報を取得する必要があるとします。

 <?php
$sql = "SELECT * FROM users WHERE email = ?";
$stmt->prepare($sql);
?>

4。バインドパラメーター

bind_paramメソッドを使用して、SQLクエリのプレースホルダー( )に変数をバインドします。この例では、文字列タイプのパラメーター(ユーザーのメール)にバインドします。

 <?php
$email = "user@example.com";
$stmt->bind_param("s", $email); // "s" 文字列タイプを表します
?>

5。クエリを実行します

実行メソッドを使用して、SQLクエリを実行します。

 <?php
$stmt->execute();
?>

6.クエリの結果を取得します

クエリが正常に実行された後、 get_resultメソッドを使用して結果を取得し、 mysqli_resultオブジェクトを返すことができます。

 <?php
$result = $stmt->get_result();

// 結果を取得して表示します
while ($row = $result->fetch_assoc()) {
    echo "ID: " . $row['id'] . " - Name: " . $row['name'] . "<br>";
}
?>

7。閉じる声明と接続

クエリが完了したら、プリプロセシングステートメントとデータベース接続を閉じることを忘れないでください。

 <?php
$stmt->close();
$conn->close();
?>

要約します

上記の手順を通じて、 MySQLI :: STMT_INIT関数を使用してSQL前処理ステートメントを準備および実行できます。前処理ステートメントは、コードセキュリティを改善し、SQLインジェクション攻撃を防ぐだけでなく、特に同じクエリが複数回実行される場合、データベースクエリの効率を改善します。

 $url = "https://api.m66.net/data"; // ドメイン名をに置き換えます m66.net