2013-01-11 26 views
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標籤去到下一行後休息一下,可能會造成什麼呢?

乾杯

回答

1

您是否檢查過這些製造商末端的換行符?嘗試

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

看看他們是否存在。如果是這樣,只需清理數據庫(在入口或一次),你會很好去。

+0

任何製造商的末端都沒有換行字符:S但修剪功能正常工作,輸出在源代碼中看起來很好,是否表明我仍然需要清理數據庫?如果是這樣的話,有55,000多行 – AJFMEDIA

+0

我猜你在某種程度上會在數據輸入上出現某種時髦/晦澀的空白字符。你可以通過修改($ row ['model_make_display_name'])對新值進行更新查詢,或者如果你的應用程序不是太緊張,你可以留下修剪。根據你在哪裏以及如何使用它來播放它... – jessevondoom

+0

僅供參考此操作方法: UPDATE car_query_models_full SET model_make_display_name = TRIM(「\ r」FROM model_make_display_name); – AJFMEDIA

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