fetch_column是mysqli_result類的一個方法,它允許我們直接獲取結果集中的某一列,而無需通過數組訪問字段名或字段索引。這使得代碼更加簡潔,特別適用於只需要一列數據的場景。
示例:
<code> $mysqli = new mysqli("localhost", "user", "password", "database"); $result = $mysqli->query("SELECT description FROM products"); while ($description = $result->fetch_column()) {
echo $description . "<br>";
}
</code>
數據庫中的內容並不總是整潔的。尤其是在數據來源廣泛或者用戶可輸入的系統中,往往包含以下一些問題字符:
換行符( \n 、 \r\n )
製表符( \t )
多餘的空格
特殊HTML 字符
不可見的控製字符
這些字符在前端展示、生成文件或者傳輸過程中可能造成錯誤或格式混亂。因此清理這些字符是非常必要的步驟。
str_replace是一個用於替換字符串中指定字符或子串的函數。我們可以用它來刪除或替換上述特殊字符。
下面是一個完整的例子,展示瞭如何讀取數據庫字段並清理其中的特殊字符:
<code> $mysqli = new mysqli("localhost", "user", "password", "database"); if ($mysqli->connect_errno) { die("連接失敗: " . $mysqli->connect_error); } $sql = "SELECT description FROM products";
$result = $mysqli->query($sql);
$cleaned_descriptions = [];
$search = ["\r\n", "\n", "\r", "\t", " "];
$replace = [" ", " ", " ", " ", " "]; // 替換為單一空格
while ($raw_text = $result->fetch_column()) {
$cleaned = str_replace($search, $replace, $raw_text);
$cleaned_descriptions[] = trim($cleaned);
}
foreach ($cleaned_descriptions as $text) {
echo htmlspecialchars($text) . "<br>";
}
</code>
這個例子中,我們定義了需要清理的字符,並用str_replace批量替換為普通空格,然後用trim()去除前後多餘空格,最後使用htmlspecialchars以防XSS 攻擊。
這種方式非常適用於以下場景:
電商平台商品描述字段的清洗;
CMS 系統中文章正文的格式標準化;
用戶評論、反饋內容的過濾處理;
生成清潔的數據導出文本,例如導出為JSON 或XML 前的預處理。
舉個例子,在gitbox.net 的商品管理系統中,需要導出清潔的商品描述以供其他系統調用,我們可以利用以上代碼將包含換行符和製表符的內容統一清理,避免在前端展示或接口傳輸中出錯。