簡體   English   中英

mysql_real_escape_string沒有逃脫“

[英]mysql_real_escape_string does not escape "

在PHP中,我在使用mysql_real_escape_string插入MySQL數據庫之前轉義字符

$array_to_insert = array_map('mysql_real_escape_string', $my_arr);
$mysql->setTbl("mytable");
$id = $mysql->insertArray($array_to_insert);

保存時,雙引號將被保存為使用\\轉義。 我不想要這個,因為有些數據是HTML,它可能包含<a href="www.stackoverflow.com">等標簽,它們將保存為<a href=\\"www.stackoverflow.com\\">然后在WordPress設置中顯示不正確。

我已經在stackoverflow上的其他地方讀過,為了避免轉義雙引號,必須首先插入(如上所述)然后再次選擇並插入表中。

有沒有辦法解決這個問題,而無需選擇和重新插入?

謝謝(注意:我使用的數據庫是utf-8格式)

您的服務器可能啟用了magic_quotes。 檢查一下

var_dump( get_magic_quotes_gpc() );

否則,它可能是您事先正在做的事情或您的數據庫庫正在做的事情。 mysql_real_escape_string只轉義字符串,以便在SQL查詢中使用它是安全的。 如果字符串已經開始轉義,它就無濟於事。

您可以使用http://php.net/manual/en/function.stripslashes.php隨時刪除斜線

例如:

$sql = "SELECT * FROM table_name";
$result = mysql_query($sql) or mysql_error();
while ($output = mysql_fetch_assoc($result)) {
  echo stripslashes($output['column_name']);
}

或者,只需刪除所有轉義的雙引號:

echo str_replace('\"', '"', $output['column_name']);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM