2014-07-25 41 views
0

我試圖按照原樣將數據存儲到我的數據庫中。這意味着我不想將反斜槓添加到單引號或雙引號中。我的代碼如下在沒有添加反斜槓的情況下在Zend Framework中將字符串轉義並存儲到mysql

$name = "Mike's Coffee House"; 
$sql = "UPDATE ".$this->_dbTable->org." SET name = ".$this->_db->quote($name)." WHERE id='1'"; 
$this->_db->query($sql); 

我的數據被保存爲:

Mike\'s Coffee House 

我如何得到它保存而不反斜線?

Mike's Coffee House 

這是使用ZendFramework 1.6.2和MySQL

一個5.2.17 PHP應用程序
+0

所以你想轉義字符...沒有逃脫字符?或者你的意思是一旦你從數據庫中提取出數據就刪除反斜槓? –

+0

我需要轉義他們不會導致SQL查詢中的錯誤。但我不想存儲反斜槓。如果有另一種方法可以「跳出」查詢而不會導致錯誤,並且不會添加反斜槓來解決我的問題,但我不知道這樣做的方式。 – OsvyG

+3

聽起來像你有[魔術引號](http://php.net/manual/en/security.magicquotes.php)打開?我假設你的真實代碼正在取$ _GET或$ _POST的值,而不是你的例子中所顯示的字符串。你真的需要關閉魔術引號。 –

回答

-2

應與

$sql = "UPDATE ".$this->_dbTable->org." SET name = ".$this->_db->quote(stripslashes($name))." WHERE id='1'"; 

斜線工作可能已經被添加(魔術引號可能是上)。

使用stripslashes只會解決這種情況,但禁用魔術引號將是一個完整的解決方案。

+0

您介意解釋此解決方案的工作原理嗎? – OsvyG

+0

這是不好的建議,因爲它掩蓋了潛在的問題,並使代碼更便於攜帶。 –

+0

正如@Bill Karwin所說,請檢查魔術引號是否打開。 – cornelb