mysqli_result::fetch_row是MySQLi 擴展中的一個方法,它用於從結果集中獲取一行數據。返回值是一個包含該行數據的索引數組,其中每個元素對應查詢結果的字段值。對於獲取單列數據的情況,它通常返回一個包含單個數據元素的數組。
示例代碼:
<?php
// 連接數據庫
$mysqli = new mysqli("localhost", "username", "password", "database");
// 檢查連接是否成功
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
// 執行查詢
$result = $mysqli->query("SELECT username FROM users");
// 獲取單列數據
$row = $result->fetch_row();
echo $row[0]; // 輸出查詢結果的第一列數據,即用戶名
?>
在這個例子中, $row[0]就是username列的數據。 fetch_row函數非常適用於僅獲取單列或單行數據的情況。
假設我們從數據庫查詢到的是一個包含多個用戶名的列,如何對這些數據進行處理呢?我們可以通過循環迭代每一行的數據,或者將結果存儲在數組中以便進一步操作。
如果查詢的結果是一列多行數據,比如獲取所有用戶名,可以使用fetch_row配合while循環來迭代每一行結果:
<?php
// 查詢所有用戶名
$query = "SELECT username FROM users";
$result = $mysqli->query($query);
// 存儲所有用戶名
$usernames = [];
while ($row = $result->fetch_row()) {
$usernames[] = $row[0];
}
// 輸出所有用戶名
foreach ($usernames as $username) {
echo $username . "<br>";
}
?>
當數據被提取到一個數組中後,我們可以對它們進行各種處理,比如過濾、排序、去重等。例如,假設你希望過濾出包含特定關鍵字的用戶名,可以這樣做:
<?php
// 過濾包含"admin"的用戶名
$filtered_usernames = array_filter($usernames, function($username) {
return strpos($username, 'admin') !== false;
});
// 输出过滤后的用戶名
foreach ($filtered_usernames as $username) {
echo $username . "<br>";
}
?>
通過array_filter函數,你可以輕鬆對從數據庫中提取的單列數據進行進一步處理。
有時你需要將提取的數據展示在網頁前端,或者通過URL 傳遞給前端。假設你需要將這些數據傳遞給HTML 頁面的<code>標籤,下面是如何將這些數據嵌入到HTML 中的例子:
<?php
// 輸出用戶列表到 HTML
echo "<ul>";
foreach ($usernames as $username) {
echo "<li><code>m66.net/{$username}</code></li>";
}
echo "</ul>";
?>
這裡,我們在每個<li>標籤內嵌入了一個<code>標籤,其中包含了修改後的URL。通過這種方式,你可以將數據庫中的數據動態地展示在前端頁面上。
如果數據需要與URL 結合使用,可以直接在<code>標籤中生成這些URL。例如:
<?php
// 輸出每個用戶的個人主頁鏈接
foreach ($usernames as $username) {
echo "<p>用戶個人主頁: <code>https://m66.net/{$username}</code></p>";
}
?>
在這個例子中,每個用戶的個人主頁都以m66.net為域名,動態生成了完整的URL,並通過<code>標籤進行格式化展示。
$row = $result->fetch_row();
if ($row) {
// 處理數據
echo $row[0];
} else {
// 處理無數據情況
echo "沒有找到數據";
}
性能優化:當數據量非常大時,建議使用分頁查詢或限制查詢返回的行數,避免一次性加載過多數據導致內存佔用過高。
通過本文的介紹,你應該能夠理解如何使用mysqli_result::fetch_row獲取並處理單列數據,並學會如何將這些數據應用到實際的前端頁面中。希望這些示例能幫助你更好地進行數據庫操作和數據展示。