PHP では、クエリはデータベースから必要なデータを取得または確認するために非常に頻繁に使用される操作です。これはデータベース内のコンテンツへのアクセスを提供するため、重要な基盤です。
この記事では、PHP でクエリを実行して Web アプリケーションをより強力にする方法について説明します。
1. データベースへの接続
クエリを開始する前に、データベース接続を確立する必要があります。 PDO (PHP Data Objects) または mysqli 拡張機能を使用できます。
PDO の使用:
$host = 'localhost'; $dbname = 'mydatabase'; $user = 'myusername'; $pass = 'mypassword'; try { $pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); //设置错误模式为异常处理 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully!"; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); }
mysqli の使用:
$host = 'localhost'; $dbname = 'mydatabase'; $user = 'myusername'; $pass = 'mypassword'; // 创建连接 $conn = new mysqli($host, $user, $pass, $dbname); // 检测连接 if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } echo "Connected successfully!";
2. クエリの実行
データベース接続を確立したら、クエリを実行できます。 。 PDO と mysqli を使用して SELECT クエリを実行する方法の例を次に示します。
PDO の使用:
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); $sql = "SELECT * FROM mytable"; $stmt = $pdo->prepare($sql); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); // 输出结果 print_r($result);
mysqli の使用:
$conn = new mysqli($host, $user, $pass, $dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT * FROM mytable"; $result = $conn->query($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>"; } } else { echo "0 results"; } $conn->close();
3. パラメータのバインド
クエリを実行するときは、通常、クエリが特定の条件を満たす結果のみを返すようにします。この場合、バインド パラメータを使用してクエリ条件をクエリ ステートメントから分離する必要があります。
次は、PDO と mysqli を使用してパラメーターをバインドする例です:
PDO の使用:
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); $sql = "SELECT * FROM mytable WHERE name = :name"; $stmt = $pdo->prepare($sql); $stmt->bindParam(':name', $name); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); // 输出结果 print_r($result);
mysqli の使用:
$conn = new mysqli($host, $user, $pass, $dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $name = "John Doe"; $sql = "SELECT * FROM mytable WHERE name = ?"; $stmt = $conn->prepare($sql); $stmt->bind_param("s", $name); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>"; } } else { echo "0 results"; } $conn->close();
4. プリコンパイルされたクエリ
プリコンパイルされたクエリはデータベース クエリを最適化する方法であり、クエリ内でプレースホルダを使用して SQL インジェクション攻撃を回避できます。
次は、PDO と mysqli プリコンパイル済みクエリの使用例です:
PDO の使用:
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); $sql = "SELECT * FROM mytable WHERE name = ?"; $stmt = $pdo->prepare($sql); $stmt->execute([$name]); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); // 输出结果 print_r($result);
mysqli の使用:
$conn = new mysqli($host, $user, $pass, $dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $name = "John Doe"; $sql = "SELECT * FROM mytable WHERE name = ?"; $stmt = $conn->prepare($sql); $stmt->bind_param("s", $name); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>"; } } else { echo "0 results"; } $conn->close();
5. 結果セットの処理
クエリを実行したら、結果セットを処理する必要があります。これは、配列や JSON 文字列など、Web アプリケーションで使用できる適切な形式に結果セットをフォーマットすることを意味します。
以下は結果セットの処理例です:
PDO の使用:
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); $sql = "SELECT * FROM mytable"; $stmt = $pdo->prepare($sql); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); // 格式化为JSON字符串 echo json_encode($result);
mysqli の使用:
$conn = new mysqli($host, $user, $pass, $dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT * FROM mytable"; $result = $conn->query($sql); // 格式化为数组 $data = array(); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { $data[] = $row; } } // 格式化为JSON字符串 echo json_encode($data); $conn->close();
要約
PHP では、クエリの実行は重要な基本であり、Web アプリケーションで頻繁に使用されます。 PDO または mysqli 拡張機能を使用してデータベース接続を確立し、SELECT クエリを使用して必要なデータを取得できます。クエリ条件にバインドされたパラメータが必要な場合は、クエリのセキュリティを確保するためにバインドされたパラメータとプリコンパイルされたクエリを使用する必要があります。最後に、結果セットを処理し、適切な Web アプリケーション データ形式にフォーマットする必要があります。
以上がPHPでクエリを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。