mysql_fetch_assoc() 從結果集中取得一行,以關聯陣列(欄位名為鍵)形式返回。若無更多行,返回 false。
array mysql_fetch_assoc ( resource $result )
參數:$result 為 mysql_query() 返回的結果資源指標。
| 特性 | 說明 | ||
|---|---|---|---|
| 返回格式 | 僅關聯索引(如 ['username' => 'john']),無數字索引 | ||
| 大小寫敏感 | 欄位名鍵值區分大小寫,需與 SQL 別名一致 | ||
| 等價寫法 | mysql_fetch_array($result, MYSQL_ASSOC) | ||
| 指標移動 | 每次呼叫內部資料指標自動下移一行 | ||
| 資源釋放 | 迴圈結束後建議 mysql_free_result($result) |
| 函數 | 返回類型 | 適用場景 | 效能備註 |
|---|---|---|---|
mysql_fetch_assoc | 關聯陣列 | 只需欄位名存取,程式碼可讀性最高 | 略快於 fetch_array |
mysql_fetch_array | 關聯+數字(預設) | 需同時用欄位名與索引存取 | 記憶體佔用雙倍 |
mysql_fetch_row | 數字索引陣列 | 只需順序存取,不關心欄位名 | 最省記憶體 |
mysql_fetch_object | 物件 | 物件導向風格,屬性名=欄位名 | 物件建立開銷稍大 |
E_DEPRECATED所有存量專案必須遷移至以下其中一種:
$conn = mysqli_connect($host, $user, $pass, $db);
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($result)) { /* ... */ }
mysqli_free_result($result);
mysqli_close($conn);
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $user, $pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);
$stmt = $pdo->query($sql);
while ($row = $stmt->fetch()) { /* $row 直接是關聯陣列 */ }
mysqli_prepare() / PDO::prepare()display_errors,記錄至日誌