當前位置: 首頁> 最新文章列表> 將mysqli_result 中的所有數據轉換為二維數組

將mysqli_result 中的所有數據轉換為二維數組

M66 2025-05-28

在使用PHP 和MySQL 開發應用時,我們經常會用到mysqli來執行數據庫查詢。執行SELECT語句後, mysqli_query()返回一個mysqli_result對象,但這個對象並不是直接可用的數組格式。為了更方便地處理數據,我們通常需要把查詢結果完整地轉換成一個二維數組。

下面是具體的實現方法。

核心代碼

我們可以使用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. 安全性:請記得對外部輸入的數據使用預處理語句( prepare ) 防止SQL 注入。

  2. 性能:一次性取出大量數據可能會佔用較多內存,如果數據量大,建議分頁查詢。

  3. 錯誤處理:總是檢查$result是否為false ,避免在查詢失敗時繼續執行後續代碼。

示例網址

假設你要用的接口是: