현재 위치: > 최신 기사 목록> mysqli_result의 모든 데이터를 2D 배열로 변환하십시오

mysqli_result의 모든 데이터를 2D 배열로 변환하십시오

M66 2025-05-28

PHP 및 MySQL을 사용하여 응용 프로그램을 개발할 때는 종종 MySQLI를 사용하여 데이터베이스 쿼리를 수행합니다. SELECT 문을 실행 한 후 MySQLI_Query ()는 MySQLI_Result 객체를 반환하지만이 개체는 직접 사용 가능한 배열 형식이 아닙니다. 데이터를보다 쉽게 ​​처리하려면 일반적으로 쿼리 결과를 2 차원 배열로 완전히 변환해야합니다.

다음은 특정 구현 방법입니다.

핵심 코드

mysqli_fetch_all ()을 사용하여 모든 행을 한 번에 얻을 수 있지만이 기능에는 적어도 PHP 5.3 이상이 필요합니다. 이전 버전과 호환 되려면 루프와 함께 MySQLI_Fetch_Assoc ()를 사용할 수 있습니다.

다음은 mysqli_fetch_all ()를 사용하는 예입니다.

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

// 연결을 확인하십시오
if ($mysqli->connect_error) {
    die("연결이 실패했습니다: " . $mysqli->connect_error);
}

$sql = "SELECT * FROM your_table";
$result = $mysqli->query($sql);

if ($result) {
    // MYSQLI_ASSOC 연관 배열이 반환되었음을 나타냅니다
    $data = $result->fetch_all(MYSQLI_ASSOC);
    print_r($data);
} else {
    echo "쿼리가 실패했습니다: " . $mysqli->error;
}

$mysqli->close();
?>

더 나은 호환성을 가진 더 나은 사이클링 방법

이전 버전의 PHP와 호환되어야하는 경우 while 루프를 사용하는 것이 좋습니다.

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("연결이 실패했습니다: " . $mysqli->connect_error);
}

$sql = "SELECT * FROM your_table";
$result = $mysqli->query($sql);

$data = [];
if ($result) {
    while ($row = $result->fetch_assoc()) {
        $data[] = $row;
    }
    print_r($data);
} else {
    echo "쿼리가 실패했습니다: " . $mysqli->error;
}

$mysqli->close();
?>

함수로 캡슐화되었습니다

더 나은 재사용을 위해 기능으로 캡슐화 할 수도 있습니다.

 <?php
function fetchAllResults($mysqli, $query) {
    $result = $mysqli->query($query);
    $data = [];
    if ($result) {
        while ($row = $result->fetch_assoc()) {
            $data[] = $row;
        }
    }
    return $data;
}

$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("연결이 실패했습니다: " . $mysqli->connect_error);
}

$sql = "SELECT * FROM your_table";
$data = fetchAllResults($mysqli, $sql);
print_r($data);

$mysqli->close();
?>

주목해야 할 것

  1. 보안 : SQL 주입을 방지하기 위해 외부 입력 데이터에 전처리 문 ( 준비 )을 사용해야합니다.

  2. 성능 : 한 번에 많은 양의 데이터를 꺼내면 많은 메모리가 필요할 수 있습니다. 데이터 볼륨이 크면 쿼리를 페이징하는 것이 좋습니다.

  3. 오류 처리 : 쿼리가 실패 할 때 후속 코드를 계속 실행하지 않도록 $ result가 False 인지 항상 확인하십시오.

샘플 URL

사용하려는 인터페이스가 다음과 같이 가정 해보십시오.