2016-12-28 59 views
-1
select * from files where filename=\'this.txt\'' 

我看着MySQL is not inserting a backslash,無法看到爲什麼\正在下降的確切原因時下降。爲什麼一個反斜槓得到運行MySQL查詢

長話短說(我知道安全隱患......)上面存儲在一個單元格中。然後單元格的內容被執行。我的問題是爲什麼不存在反向斜線存在的問題?

總之,爲什麼當我想到這工作的正確方法是

select * from files where filename='this.txt' 

的PHP來查詢是如何跑到

$result = mysqli_query($db,$query) 
+2

\通常是一個轉義字符。你嘗試過把它們翻倍嗎?試試'filename ='\\ this.txt \\''而不是 – Takarii

+0

@Takarii你不明白這個問題。問題是:「爲什麼這項工作」... – arkascha

+0

你的問題是不明確的。什麼代表第一個代碼片段?這是MySQL服務器收到的查詢嗎?它是你的PHP代碼的一個片段嗎?這種方式無效。請使用幫助潛在響應者爲您提供答案的信息更新您的問題。並閱讀[關於字符串的PHP文檔](http://php.net/manual/en/language.types.string.php)。 – axiac

回答

0

轉義字符是平時工作的同時把它兩次。

如果你想存儲反斜槓,那麼你可以通過添加更多的\\來逃脫它。

您將在這裏找到完整的參考

http://dev.mysql.com/doc/refman/5.7/en/string-literals.html

+0

因此,使用'SOMETHING'\意味着當查詢運行時,它被視爲'SOMETHING'? – pee2pee

+0

是的,我知道 –

+0

我在問一個問題 – pee2pee