在使用PHP 與MySQL 進行交互時,獲取查詢結果是常見且重要的一步。 mysql_fetch_array()是PHP 中用於獲取查詢結果的一個函數,它可以將結果作為關聯數組、數字索引數組,或者兩者兼有的形式返回,方便我們在後續程序中進行處理。
注意: mysql_fetch_array()屬於mysql擴展,該擴展自PHP 7.0 起已被廢棄,建議新項目使用mysqli或PDO_MySQL 。本文主要針對維護舊系統或學習目的。
在開始之前,我們需要連接到MySQL 數據庫並選擇一個數據庫:
<code> <?php // 連接數據庫$conn = mysql_connect("localhost", "username", "password"); if (!$conn) {
die("連接失敗: " . mysql_error());
}
// 選擇數據庫
mysql_select_db("test_db", $conn);
?>
</code>
執行一條簡單的SQL 查詢,獲取用戶表中的所有用戶信息:
<code> <?php $sql = "SELECT id, name, email FROM users"; $result = mysql_query($sql, $conn); if (!$result) {
die("查詢失敗: " . mysql_error());
}
?>
</code>
接下來,我們使用mysql_fetch_array()獲取查詢結果:
<code> <?php while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "ID: " . $row["id"] . "<br>"; echo "姓名: " . $row["name"] . "<br>"; echo "郵箱: " . $row["email"] . "<br><br>"; } ?> </code>上面的代碼中,我們傳入了MYSQL_ASSOC常量,它表示我們希望以關聯數組的方式獲取數據。這意味著我們可以通過字段名來訪問每一列的值。
mysql_fetch_array()的第二個參數可以設置為以下幾種模式:
MYSQL_ASSOC :只返回關聯數組。
MYSQL_NUM :只返回數字索引數組。
MYSQL_BOTH (默認):同時返回關聯和數字索引數組。
示例(同時獲取關聯和索引):
<code> <?php while ($row = mysql_fetch_array($result)) { echo $row[0]; // 使用數字索引echo $row["name"]; // 使用字段名} ?> </code>下面是一個完整的使用流程:
<code> <?php // 連接數據庫$conn = mysql_connect("localhost", "root", "password"); if (!$conn) { die("連接失敗: " . mysql_error()); }mysql_select_db("test_db", $conn);
// 查詢數據
$sql = "SELECT id, name, email FROM users";
$result = mysql_query($sql, $conn);
// 輸出結果
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "<p>";
echo "用戶ID: " . $row["id"] . "<br>";
echo "用戶名: " . $row["name"] . "<br>";
echo "用戶郵箱: " . $row["email"] . "<br>";
echo "資料鏈接: <a href=' https://gitbox.net/user/ " . $row["id"] . "'>查看</a>";
echo "</p>";
}
// 關閉連接
mysql_close($conn);
?>
</code>
mysql_fetch_array()提供了一種靈活的方式來獲取MySQL 查詢結果。雖然它已經不推薦在新項目中使用,但了解其工作方式對於理解PHP 和數據庫交互仍有幫助。在維護舊系統時,掌握如何使用它非常必要。
在開發新的系統時,推薦使用mysqli_fetch_assoc()或PDOStatement::fetch()來代替。無論使用哪種方式,理解底層的查詢邏輯永遠是構建可靠應用的基礎。