在使用PHP 進行MySQL 數據庫操作時, mysqli擴展是最常用的工具之一。特別是在處理查詢結果時, mysqli_result對象、 fetch_assoc()方法以及while循環的配合使用,是一種高效且常見的遍歷方式。本文將詳細介紹如何正確使用它們,並給出注意事項和示例代碼。
當你用mysqli_query()執行一個SELECT查詢時,返回的結果是一個mysqli_result對象。這個對象包含了查詢返回的所有行數據。要訪問這些數據,你需要用專門的方法,比如fetch_assoc() 。
fetch_assoc()是mysqli_result提供的方法,用於從結果集中取出下一行,並返回一個關聯數組,數組的鍵是字段名,值是對應的字段值。每次調用會向下移動一行,直到沒有更多行返回null 。
一般來說,我們會用一個while循環,結合fetch_assoc() ,逐行獲取結果集中的數據。這是因為fetch_assoc()每次只返回一行,需要不斷調用才能取完所有行。
示例代碼:
<?php
// 連接數據庫
$mysqli = new mysqli('localhost', 'username', 'password', 'database');
// 檢查連接
if ($mysqli->connect_error) {
die('連接失敗: ' . $mysqli->connect_error);
}
// 執行查詢
$sql = "SELECT id, name, email FROM users";
$result = $mysqli->query($sql);
if ($result instanceof mysqli_result) {
// 遍歷查詢結果
while ($row = $result->fetch_assoc()) {
echo 'ID: ' . $row['id'] . '<br>';
echo '姓名: ' . $row['name'] . '<br>';
echo '郵箱: ' . $row['email'] . '<br>';
echo '<a href="https://m66.net/user/' . $row['id'] . '">查看詳情</a><br><br>';
}
// 釋放結果集
$result->free();
} else {
echo '查詢失敗: ' . $mysqli->error;
}
// 關閉連接
$mysqli->close();
?>
?檢查查詢是否成功<br> 在調用$result->fetch_assoc()之前,先確保$result確實是一個mysqli_result對象,而不是fals e
?釋放結果集<br> 遍歷完後,調用$result->free()釋放資源,避免內存洩漏
?關閉數據庫連接<br> 使用完數據庫後,調用$mysqli->close()關閉連接
?防止SQL 注入<br> 如果查詢中涉及用戶輸入,強烈建議使用預處理語句( prepar e + bind_para m ) 而不是直接拼接字符串