2012-11-30 50 views
0

我嘗試使用mysql_real_escape_string防止SQL注入將數據插入到數據庫之前之後:顯示文本區域內的多個線路使用mysql_real_escape_string

$data=mysql_real_escape_string($_POST['data']); 

現在,數據存儲爲這樣:

That\\\'s an apostrophe.\r\n\r\nThis new line isn\\\'t displaying properly! 

所以,我試圖讓它正確地顯示在一個textarea裏面,然後將它從mysql中取出:

$data = nl2br($data); 

無論出於何種原因,這沒有什麼。我甚至試着用str_replace來代替\r\n' s,用<br>,但是<br>只顯示在textarea中。

如何獲得什麼在我的MySQL作爲顯示:

That's an apostrophe. 

This new line isn't displaying properly! 
+0

驗證您的代碼。看起來你多次逃避該字符串。 'mysql_real_escape_strin'的輸出應該是:'這是一個撇號。這條新線路沒有正確顯示!'。哪個會正確出來。 – phpisuber01

+0

請注意,'mysql_xxx()'函數被認爲是過時且不安全的(即使您正在轉義)。他們也被棄用,這意味着他們可能會在未來的版本中從PHP中刪除。建議切換到相應的'mysqli_xx()'函數或PDO庫。另見http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-function-in-php – SDC

回答

0

你可能已經magic_quotes的開啓, 與檢查
回聲get_magic_quotes_gpc() 否則你會雙引號

「設置magic_quotes的狀態用於GPC(Get/Post/Cookie)操作。當magic_quotes開啓時,所有'(單引號),「(雙引號),\(反斜槓)和NUL都會以backsla自動sh。 「

順便說一下,這不是一個好IDEIA使用magic_quotes的,請嘗試使用這個類的一個。

PDO http://br2.php.net/manual/en/book.pdo.php 或mysqli的http://br2.php.net/manual/en/book.mysqli.php

2

最好的解決方案..

$data= mysql_real_escape_string($_POST['data']);(你可以插入你的數據庫中,如果你想)

echo stripslashes(str_replace('\r\n',PHP_EOL,$data));(輸出完全符合你的輸入)

相關問題