mysql查询后出现在源代码中的换行符

时间:2013-01-11 01:03:48

标签: php mysql database csv

我正在做一个简单的查询,从我的数据库中检索汽车制造商:

$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标记到下一行的文本后添加了一个中断,可能是什么导致了这个?

干杯

2 个答案:

答案 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,并使用PDOMySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial

答案 1 :(得分:1)

您是否检查过这些制造商两端的换行符?试试

echo "<p>".trim($row['model_make_display_name'])."</p>\n";

看他们是否在场。如果是这样,只需清理数据库(进入或一次性),你就可以去了。