2009-12-29 61 views
-2

我插入一些HTML到MySQL數據庫表。但是當我把它拿回來時,很多角色都被破壞了。我注意到兩個具體情況是:mysql字符轉義單引號

  1. 單引號越來越轉化爲,較早閱讀class='content-section developer-support'
  2. 代碼已得到轉化爲developer-support\="" class="\'content-section"

據我所知,它的逃逸問題。在我將其推入數據庫之前,我在該字段上使用了mysql_real_escape_string。

避免此問題的正確方法是什麼?


來源:

$query = sprintf("insert into events (title, content) values('%s', '%s')", 
      mysql_real_escape_string($this->title, $conn), 
      mysql_real_escape_string($this->content, $conn) 
    ); 

我談論插入場content文本。

我確實啓用了magic_quotes。我會解決它。

+0

禁用magic_quotes後有什麼功能? – 2009-12-30 07:48:48

回答

0

我想你在你的PHP配置中啓用了magic_quotes,而且似乎有東西在試圖清理你的HTML。你需要顯示你的來源。

+0

添加了我的問題的來源 – jrharshath 2009-12-29 14:29:01

+0

我刪除了magic_quotes_gpc。現在它就像一個魅力! :) – jrharshath 2009-12-30 20:30:33

0

可能值得一提的是,您應該考慮使用MySQLi或PDO中的預處理語句。從本質上講,您所展示的內容與執行準備好的語句非常相似,並且無需在用戶提供的每一位數據上使用mysql_real_escape_string。它還具有更安全的優點,並且可以提供更好的性能。

此外正如注意magic_quotes最有可能是你的問題。