> 백엔드 개발 > PHP 문제 > PHP에서 쿼리를 실행하는 방법

PHP에서 쿼리를 실행하는 방법

WBOY
풀어 주다: 2023-05-06 15:07:07
원래의
706명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿