我要去猜你打算插入的GoogleMaps表,而不是調用表名爲值的GoogleMaps(如果我錯了,讓我知道,我將修改我的答案)數據庫。所以這是第一件事。接下來的事情是你想使用反引號而不是單引號表和列名。
$query = "INSERT INTO `googlemaps` (`id`,`lat`,`long`,`desc`) VALUES ".$sql;
倒引號是報價標識符,並且將防止意外使用保留關鍵字時,列或表名之意。
的標識符引號字符是反引號(「`」)Click here to read more
既然你不使用任何關鍵字,除了遞減而長,你也可以寫你的查詢是這樣的:
$query = "INSERT INTO googlemaps (id,lat,`long`,`desc`) VALUES ".$sql;
而且因爲沒有人願意讓一個SQL注入,你可以修改你的for循環是這樣的:
$sql = "(NULL, '".mysqli_escape_string($db, $_POST['value'][$i])."', '".mysqli_escape_string($db, $_POST['value'][$i+1])."', '".mysqli_escape_string($db, $_POST['value'][$i+2])."')";
mysqli_escape_string將字符串中的特殊字符轉義爲在SQL語句中使用,同時考慮連接的當前字符集。 Read more by clicking here
看起來你正在嘗試做的擴展插入太
你的最終代碼會是這個樣子(設置$ DB到任何您的連接變量):
$sql = []; // define as an array
for($i=0; $i<count($_POST['value']);$i=$i+3) {
$sql[] = "(NULL, '".mysqli_escape_string($db, $_POST['value'][$i])."', '".mysqli_escape_string($db, $_POST['value'][$i+1])."', '".mysqli_escape_string($db, $_POST['value'][$i+2])."')";
}
$query = "INSERT INTO googlemaps (id,lat,`long`,`desc`) VALUES ".implode(',', $sql);
破滅將加入SQL字符串一起回來逗號分隔
破滅使用字符串加入數組元素Read more by reading the documentation here
從'表和列名稱'中使用'引號'來代替'backtick'! – Saty
@Clayton你的答案將無法正常工作,而不是目前的狀態,因爲我在它之下概括。 –