我要去猜你打算插入的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你的答案将无法正常工作,而不是目前的状态,因为我在它之下概括。 –