2012-03-22 55 views
2

代碼是如何在php中用分號執行mysql代碼?

INSERT INTO `semicolon` VALUES ('1', 'a:1:{s:4:\"size\"';\s:2:\"24\";\}'); 

正如你可能在雙單引號沒有看到; - 分號,它分割代碼,因爲它的執行符號。

我得到一個語法錯誤消息,否則沒有; - 分號它工作正常。如果使用像phpmyadmin或navicat這樣的軟件,即使使用分號也行。

問題是如何解決它在php文件中運行?

+4

你爲什麼不使用mysql_real_escape_string()和你爲什麼對插入正常化序列化的陣列? – 2012-03-22 05:47:41

+2

爲什麼你的表名稱分號...? – 2012-03-22 05:51:27

+0

@Dagon,因爲本網站上的每個friggin答案都表示使用mysql_real_escape_string()來「保護用戶數據免受嚇到的SQL注入」。所以,當沒有用戶數據或沒有危險時,沒有人會介意這個功能。 – 2012-03-22 05:57:52

回答

6

實際上'正在拆分代碼。與\'

INSERT INTO semicolon VALUES ('1', 'a:1:{s:4:\"size\"\';\s:2:\"24\";}'); 

'逃避它是SQL字符串分隔符。 SQL引擎的東西以字符串結尾'

+0

我會試試看! – JackWill 2012-03-22 05:57:52

+0

它不起作用:...對於在第1行''a:1:{s:4:\「size \」\''附近使用的正確語法 聲明: INSERT INTO'semicolon' VALUES '1','a:1:{s:4:\「size \」\' - 這是在停止; - 分號,如果擺脫它,「將起作用」其他想法? – JackWill 2012-03-22 06:03:55

+0

它適用於我。你如何執行這個代碼? – 2012-03-22 06:13:49

8

這是由於你的單引號,不是你的分號:

INSERT INTO semicolon VALUES ('1', 'a:1:{s:4:\"size\"';\s:2:\"24\";}'); 
-----------------------------------------------------^ 
+0

這就像是php錯誤而不是mysql錯誤。 – JackWill 2012-03-22 06:05:53

+0

@JackWill發佈你的PHP代碼然後,你只給了我們一個mysql插入 – GoldenNewby 2012-03-22 06:09:04