2014-11-04 84 views
0

我有一個表單,我也可以寫HTML標籤。我必須保存這個textarea保存每一個HTML標籤。因此,這裏的代碼:MySQL API - 存儲HTML標籤

foreach($_POST["comment"] AS $key => $value) 
{ 
    mysql_query("UPDATE comments SET title= '".$value["title"]."', comment = '".$value['comment']."' WHERE id = '".$value["id"]."'"); 
} 

當我試圖挽救這個:

<b>Hello</b> 

在MySQL中我得到這樣的結果:

&lt;b&gt;Hello&lt;/b&gt; 

我必須保持每一個HTML,因爲它是。如果我寫<b>我必須在數據庫中確切地保存<b>。我嘗試了轉義,html特性,引號,刪除斜槓(...),但這個人繼續以錯誤的方式保存所有內容。

p.s.在你提問yes之前,description字段是使用UTF-8編碼的TEXT tupe。

+1

MySQL不會那樣做編碼。你的問題在別的地方。 – 2014-11-04 00:47:54

+0

您是否嘗試過htmlspecialchars? – Mark 2014-11-04 00:48:38

+0

爲什麼你想要數據庫保存
。將它保存爲tg代碼格式非常好。 – 2014-11-04 00:50:06

回答

0

您是否嘗試過使用http://php.net/manual/en/function.htmlspecialchars-decode.php上述值?這應該完全符合你的要求。

試運行:

$sStr = '&lt;b&gt;Hello&lt;/b&gt;'; echo htmlspecialchars_decode($sStr);

,這將是正確編碼。將其提供給數據庫將存儲正確的值。

此外,但這是一個側面的通知,你真的不應該保存後驗證輸入數據。我認爲這只是一個簡單的例子,而不是生產代碼?但是,只是一個建議。

+0

是的!這是解決方案。我需要像你在另一個消息中所述的那樣,與htmlspecialchars相反。謝謝。 – user1274113 2014-11-05 14:10:03

+0

非常歡迎。爲了將來的參考,請注意根本原因。所有發佈的數據都將進行urlencoded,這將解釋您首先遇到的情況。快樂的編碼! – Digitalis 2014-11-06 18:50:20

-1

您需要轉義條目。如果你使用的是mysql方法,你需要mysql_escape_string函數,如:

$string = mysql_escape_string("<br>Hello</br>"); 
+0

正如Mike所提到的,mysql_real_escape_string不會將html實體轉換回utf字符。它只會添加轉義字符。 http://php.net/manual/en/function.mysql-real-escape-string.php – Digitalis 2014-11-04 01:07:57