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 的商品管理系统中,需要导出清洁的商品描述以供其他系统调用,我们可以利用以上代码将包含换行符和制表符的内容统一清理,避免在前端展示或接口传输中出错。
相关标签:
mysqli_result