php / mysql:向mysql数据库发送查询时出错

时间:2013-07-02 23:27:45

标签: php mysql insert

我已经向mysql数据库发送了很多查询,所以当它停止工作时它会让我进行循环。我只想插入文本和int和十进制信息。语法在某处错了吗?它会抛出此错误消息,但我不知道这意味着什么!

错误消息:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'long) VALUES (jpeg.jpg,1410700,image/jpeg,1372713379,42.978852222222,-86.0356041' at line 1

name,type,datetime table列是varchar

size is int

lat和long是小数(14,12)和(15,12)

我尝试了许多不同的查询变体,尝试将其发送到我的localhost wampserver。如果你看到我错过了什么,请告诉我。谢谢!

 $conn = mysqli_connect("localhost", "root", "password", "databaseimage") or die('Error Connecting.');
 $sql = "INSERT INTO `images` (name,size,type,datetime,lat,long) VALUES ($imageName,$imageSize,$imageType,$datetime,$lat,$long)";
 if(mysqli_query($conn, $sql)) {
    echo "Added to database successfully!";
 } else {
    echo "Error sending query!";
    printf("\nErrormessage: %s\n", mysqli_error($conn));
 }

我已经尝试过有没有“标记”。 我用每个变量周围的单引号试了一下。 我试过发送原始数据,但仍然出错。

2 个答案:

答案 0 :(得分:4)

LONG是一个mySQL保留词: http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

修复它的一种方法是将这些单词包装在反引号中:

INSERT INTO `images` (name,size,type,datetime,lat,`long`) VALUES ('$imagename'....

但是如果可以的话,最好避免使用保留字作为列名或表名 - 如你所发现的那样,它会导致像这样的奇怪情况。

答案 1 :(得分:0)

查询应该看起来像

$sql = "INSERT INTO `images` (name,size,type,datetime,lat,`long`) VALUES ('$imageName',$imageSize,'$imageType','$datetime',$lat,$long)";