php - SQL #1064 解析错误

标签 php mysql

<分区>

我的代码:

for($i=0; $i<count($_POST['value']);$i=$i+3)
{
    $sql =  "(NULL, '".$_POST['value'][$i]."', '".$_POST['value'][$i+1]."', '".$_POST['value'][$i+2]."')";  
}
$query = "INSERT INTO 'googlemaps'.'values' ('id','lat','long','desc') VALUES ".$sql;

但是我在 SQL 中得到了这个错误

#1064 - Erreur de syntaxe près de ''googlemaps'.'values' ('id','lat','long','desc') VALUES (NULL, '20.593684', '78.' à la ligne 1

有人能指出这里出了什么问题吗?

或任何其他方式来简化此代码?

最佳答案

我猜你打算插入到 googlemaps 表中,而不是一个名为 googlemaps 的数据库和一个名为 values 的表(如果我弄错了,请告诉我,我会编辑我的答案)。所以这是第一件事。接下来是您要使用反引号而不是单引号表和列名称。

$query = "INSERT INTO `googlemaps` (`id`,`lat`,`long`,`desc`) VALUES ".$sql;

反引号是引号标识符,可以防止您在需要列名或表名时意外使用保留关键字。

The identifier quote character is the backtick (“`”) Click here to read more

因为除了 desc 和 long 之外你没有使用任何关键字,你也可以这样写你的查询:

$query = "INSERT INTO googlemaps (id,lat,`long`,`desc`) VALUES ".$sql;

因为没有人想要 SQL 注入(inject),您可以像这样修改您的 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 Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection. 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);

Iplode 会将 SQL 字符串重新连接在一起,以逗号分隔

implode Join array elements with a string Read more by reading the documentation here

关于php - SQL #1064 解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34555641/

相关文章:

PHP - 将 <head></head> 数据作为包含加载是否愚蠢

php - WordPress 在前端显示旧数据

php - Android MySql 使用 php 创建图像并将其上传到服务器

mysql - Zend_Db查询Mysqli准备错误: Operand should contain 1 column(s)

php - 无法获取值(value)

php - 那里有适用于 Mac Os X 的 KCacheGrind 替代品吗?

php - 从点击的按钮获取 URL

php - 无法使用 Yii 将文件上传到服务器

MySQL 全文搜索?

python - 即使在提交更改后,MySQL-python 连接也看不到在另一个连接上对数据库所做的更改