我正在做一个简单的查询,从我的数据库中检索汽车制造商:
$result = mysql_query("SELECT DISTINCT model_make_display_name FROM car_query_models_full ORDER By model_make_display_name ASC") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
echo "<p>".$row['model_make_display_name']."</p>\n";
}
数据在HTML视图中正常显示,但是当我查看源代码时,某些结果显示如下:
<p>Ariel
</p>
<p>Armstrong </p>
<p>Ascari
</p>
<p>Aston Mart</p>
<p>Audi
</p>
<p>Austin
</p>
<p>Austin Hea</p>
<p>Autobianch</p>
<p>Auverland
</p>
<p>Avanti
</p>
<p>Beijing
</p>
<p>Bentley
</p>
请注意,一些名称在强制关闭p标记到下一行的文本后添加了一个中断,可能是什么导致了这个?
干杯
答案 0 :(得分:1)
它存储在数据库中的方式导致了这种情况。
您可以尝试:
echo "<p>" . htmlspecialchars( $row['model_make_display_name'] ) . "</p>\n";
或从值
中替换\n
和\r
SELECT ... REPLACE(model_make_display_name, '\n', '')
Please, don't use mysql_*
functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。
答案 1 :(得分:1)
您是否检查过这些制造商两端的换行符?试试
echo "<p>".trim($row['model_make_display_name'])."</p>\n";
看他们是否在场。如果是这样,只需清理数据库(进入或一次性),你就可以去了。