クライアントがPHPファイルを要求すると、サーバーは、解析、実行、出力の3つの主要な手順を順番に完了します。
サーバーは最初にPHPコードを解析し、スクリプトを実行可能な命令に変換します。 PHPファイル<?php始まり、 ?> end。
解析が完了すると、サーバーはPHPスクリプトを実行して変数、関数、ロジックを処理します。実行中、サーバーは、スクリプト内のコードをサーバー環境の変数と関数から区別して、正しく実行されるようにします。
コードの実行が完了した後、サーバーは結果をクライアントに返します。通常はHTML、JSON、XML、または画像形式です。
PHPでは、以下に示すように、MySQLデータベースへの接続は通常、MySQLI拡張機能を使用します。
$username = "ユーザー名";
$password = "パスワード";
$hostname = "ホスト名";
$database = "データベース名";
// 接続オブジェクトを作成します
$conn = new mysqli($hostname, $username, $password, $database);
// 接続が成功しているかどうかを確認してください
if ($conn->connect_error) {
die("接続に失敗しました: " . $conn->connect_error);
}
echo "接続に正常に";
上記のコードは、ホスト名、ユーザー名、パスワード、データベース名を渡すことにより、接続を確立します。接続が成功した後、SQLステートメントは$ connを使用して実行できます。
MySQLIオブジェクトを使用して簡単なクエリを実行するコードは次のとおりです。
$sql = "SELECT * FROM テーブル名";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 各レコードを出力します
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"] . " - Name: " . $row["name"] . "<br>";
}
} else {
echo "クエリの結果はありません";
}
$conn->close();
クエリを実行した後、コードは結果を通過し、データを1つずつ出力し、最後にデータベース接続を閉じます。
SQLインジェクションは、データベースセキュリティに対する一般的な脅威です。効果的な保護対策には次のものが含まれます。
以下は、PDOアンチインジェクションを使用したコード例を示しています。
$sql = "SELECT * FROM テーブル名 WHERE name = :name";
$stmt = $conn->prepare($sql);
$stmt->bindValue(':name', $name);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
var_dump($result);
$conn->close();
SQLおよびBindValueのバインディングパラメーターを準備方法を介したプリコンパイルと、悪意のあるSQLインジェクションを効果的に回避し、データセキュリティを確保することができます。