SQL语法错误 - 插入操作(PHP)

时间:2014-03-19 22:47:11

标签: php mysql database mysqli

我已经多次使用此代码而没有问题,并且无法确定为什么我有语法错误。我目前正在插入“虚拟”数据,以确认我的变量不是问题。

$connection = mysqli_connect($hostname,$username,$password,$database);
if (mysqli_connect_errno()){
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
} else {
  echo "connection success <br>"; 
}

$query = "INSERT INTO Radio (State, City, Call, Dial, Lat, Long, Lat2, Long2) VALUES ('abc', 'abc', 'abc', '2', 'abc', 'abc', 'abc', 'abc')";
$result = mysqli_query($connection, $query);
printf("Errormessage: %s\n", mysqli_error($connection));
mysqli_close($connection);

我得到以下输出:

connection success 
Errormessage: 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 'Call, Dial, Lat, Long, Lat2, Long2) VALUES ('abc', 'abc', 'abc', '2', 'abc', 'ab' at line 1

我知道我的连接正常,并且我有语法错误。话虽如此,我无法发现我的语法问题。我有8个字段,并提供8个值。字段名称与我的数据库定义完全匹配:

database-definition

有什么想法吗?根本没有插入任何东西。感谢。

3 个答案:

答案 0 :(得分:0)

结果&#34; CALL&#34;是一个保留字,所以我不能将它用作数据库列。游民。问题解决了。与&#34; LONG&#34;相同。应该早点意识到这一点。也许这会帮助别人。

答案 1 :(得分:0)

CALL是保留字,使用别的东西

答案 2 :(得分:0)

正如所指出的,Call是一个保留字。如果真的需要,你仍然可以使用这个列名,你只需要在每次在查询中使用它时都要转义它。像这样

"INSERT INTO Radio (State, City, `Call`, Dial, Lat, Long, Lat2, Long2) VALUES ('abc', 'abc', 'abc', '2', 'abc', 'abc', 'abc', 'abc')"