2011-10-21 128 views
1

我將數據插入到包含一些基本html標記,雙引號和單引號的表中。將HTML插入數據庫

我現在用的是以下行來處理數據:

htmlentities(($_POST[content]), ENT_QUOTES); 

這樣做的問題是,當我選擇這個數據,使其恢復到屏幕上,顯示實際html標籤,而不是渲染的html,也就是說,如果我使用<b>bold</b>標記,則將其顯示爲文本,而不是將該文本標記爲加粗。如果我不使用上面的線,即

htmlentities(($_POST[content]), ENT_QUOTES); 

然後,我不能將數據插入到數據庫中,因爲數據可以包含單引號和雙引號。

我該如何處理這個問題?

所以基本上,我應該能夠將數據插入到單引號或雙引號不會導致問題的數據庫中。當將數據呈現回屏幕上時,它應該呈現html標籤,因爲它們應該呈現在瀏覽器中,並且引用應該在被呈現回屏幕上的文本中顯示爲引號。

回答

2
$html = mysql_real_escape_string($html); 

http://php.net/manual/en/function.mysql-real-escape-string.php

確保你已經在使用該功能前,適當的MySQL連接mysql_connect

+0

我改變了'htmlentities(($ _ POST [內容]),ENT_QUOTES);'到'mysql_real_escape_string($ _ POST [content]);'並且它將一個空白記錄保存到數據庫中,而不是文本我期待它保存...我連接如下:'$ connection = mysql_connect('localhost','user','pass')或die(mysql_error());' – oshirowanen

+0

你的代碼中是否有mysql_connect?如果您遇到問題,請嘗試使用'addslashes'函數。 – DhruvPathak

+0

你是否將內容分配回變量? '$ html = mysql_real_escape_string($ html)'是正確的,但只執行'mysql_real_escape_string($ html)'將不會對$ html變量產生影響 – DhruvPathak

-1

把這麼多HTML代碼放到mysql表中似乎對我來說是一種醜陋的方法,如果你要添加一個帖子,但是如果你保存了一個頁面,你可能會重新填充你可能會考慮另一種方式。

這是我的方法做這個:

  1. 清除任何HTML代碼
  2. 將有用的數據放入數組(連載陣列)
  3. 保存數組到數據庫
  4. 重新填充陣列時,頁面被稱爲(非串行陣列)

這節省了我把< 1kb數據而不是125kb

如果您使用類似系統的模板,這是一種好方法。

0

,你必須使用strip_tags($str); 如果你想只刪除HTML標籤..單引號或雙引號將保持... 但在你的情況下,問題是...你是把大量的空白與你的琴絃所以你可以完美地使用use strip_tags($str);