0

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

$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 标签进入下一行的文本之后添加了一个中断,这可能是什么原因造成的?

干杯

4

2 回答 2

1

它存储在数据库中的方式导致了这种情况。

你可以试试:

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

或从值替换\n和:\r

SELECT ... REPLACE(model_make_display_name, '\n', '')

请不要mysql_*在新代码中使用函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。如果您选择 PDO,这里有一个很好的教程

于 2013-01-11T01:05:32.983 回答
1

您是否检查了这些制造商末端的换行符?尝试

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

看看他们是否在场。如果是这样,只需清理数据库(在输入或一次性),你会很高兴。

于 2013-01-11T01:07:58.730 回答