- データベース接続の確立: まず、mysqliを使用してデータベースに接続します。以下は接続の例です。
$servername = "localhost";
$username = "ユーザー名";
$password = "パスワード";
$dbname = "データベース名";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("接続に失敗しました: " . $conn->connect_error);
}
- プリペアドステートメントの作成:
次に、プリペアドステートメントを使用してSQLクエリを作成します。この際、変数をバインドするために
?
を使用します。
$stmt = $conn->prepare("SELECT * FROM テーブル名 WHERE 列名 = ?");
- 変数のバインド:
バインドする変数のデータ型に応じて
bind_param
を使用します。以下は整数値の例です。
$value = 1;
$stmt->bind_param("i", $value);
- クエリの実行: バインドした変数を使用してクエリを実行します。
$stmt->execute();
- 結果の取得: クエリの実行結果を変数に格納します。
$result = $stmt->get_result();
- 結果の処理: 結果を必要に応じて処理します。以下は結果をループして表示する例です。
while ($row = $result->fetch_assoc()) {
echo $row["列名"];
}
- ステートメントのクローズ: 終了時にステートメントをクローズします。
$stmt->close();
- データベース接続のクローズ: 全ての処理が終わったら、データベース接続をクローズします。
$conn->close();
以上が、PHP mysqli bindを使用したデータベースクエリの安全な実行方法です。バインドを使用することで、SQLインジェクション攻撃からデータベースを保護することができます。