PHP에서 쿼리는 데이터베이스에서 필요한 데이터를 가져오거나 확인하기 위해 매우 자주 사용되는 작업입니다. 이는 데이터베이스의 콘텐츠에 대한 액세스를 제공하므로 중요한 기반입니다.
이 기사에서는 웹 애플리케이션을 더욱 강력하게 만들기 위해 PHP에서 쿼리를 실행하는 방법을 살펴보겠습니다.
1. 데이터베이스에 연결
쿼리를 시작하기 전에 데이터베이스 연결을 설정해야 합니다. PDO(PHP 데이터 개체) 또는 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 문자열과 같은 웹 애플리케이션에서 사용하기에 적합한 형식으로 형식을 지정한다는 의미입니다.
다음은 결과 집합 처리의 예입니다.
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에서 쿼리를 실행하는 것은 웹 애플리케이션에서 자주 사용되는 중요한 기본입니다. PDO 또는 mysqli 확장을 사용하여 데이터베이스 연결을 설정하고 SELECT 쿼리를 사용하여 필요한 데이터를 검색할 수 있습니다. 쿼리 조건에 바인딩된 매개변수가 필요한 경우 쿼리 보안을 보장하기 위해 바인딩된 매개변수와 미리 컴파일된 쿼리를 사용해야 합니다. 마지막으로 결과 집합을 처리하고 적절한 웹 애플리케이션 데이터 형식으로 형식을 지정해야 합니다.
위 내용은 PHP에서 쿼리를 실행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!