2011-04-09 23 views
0
mysql_query("INSERT INTO data(timestamp,type,lift,sets,reps,weight) VALUES(".$time.",".$_POST[type][$i].",".$_POST[lift][$i].",".$_POST[sets][$i].",".$_POST[reps][$i].",".$_POST[weight][$i].")")or die(mysql_error()); 

我的代碼如上。所有的變量都被設置。在PHP中導致mysql錯誤的多維數組插入查詢

我得到的錯誤是

您的SQL語法錯誤;請查看與您的MySQL服務器版本對應的手冊,以便在第1行使用正確的語法,以便在'Standing DB Hammer Curls 1,2,3'處使用'')

這似乎沒有任何理由。

可以在這個問題有人clarifty,最好解釋爲什麼多維數組是如此特別,只要他們需要等

乾杯之間進行封閉什麼

回答

1

你將圍繞'單引號變量插入?

這將失敗

$t = "Test"; 
mysql_query("INSERT INTO data(mystring) VALUES (" . $t . ")"); 

這將工作

$t = "Test"; 
mysql_query("INSERT INTO data(mystring) VALUES ('" . $t . "')"); 

記住抵禦MySql Injection

編輯:感謝埃裏克

是的,你應該使用類似mysql_real_escape_string()以避免可能在您的POST d變量中的單引號。

編輯:關於注射

簡單....因爲你需要用字符串'(單引號),如果'鍵入到一個表格,然後提交話,就可以打破插入或更新碼。

如果輸入以下內容形式「奧布萊恩」,那麼MySQL的代碼將

INSERT INTO data(mystring) VALUES ('O'Brien') 

這當然是不正確的,這樣的事情可以開發利用以進入網站。這是被利用的world wide recently

+1

要添加到傑克的回覆,爲了抵禦MySQL注入,你要逃避你插入的數據中的任何引號。 – Eric 2011-04-09 20:37:18

+1

是的Eric,謝謝。編輯。 – 2011-04-09 20:38:58

+0

非常感謝。如果你能澄清爲什麼需要這樣的話,將不勝感激。乾杯 – 2011-04-09 20:47:17