2011-10-25 240 views
0

我有下面的代码:奇怪的MySQL错误。 (PHP)

<?php 
include("config.php"); 
$key = 'blahblah'; 
$sql = "INSERT INTO softversions SET key='$key'"; 
$result = mysql_query($sql) or die ($mysql_error()); 
echo "dude"; 
?> 

这给了我一个错误:

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 'key='svksskjfvns'' at line 1 

的事情是,我已经在其他页面,并使用这个脚本约一百倍工作。 表和字段名称是100%正确的。

我不明白是怎么回事。 你看到那里的语法错误吗?

+0

认为应该是:'INSERT INTO softversions(键)VALUES( '$键')' – Clive

+0

您使用SET为UPDATE语句不是INSERT语句。我非常怀疑这个脚本,因为你在其他任何地方都可以使用它。 – Garvin

+0

@Garvin你实际上可以使用'INSERT INTO .. SET ..'。这是一个老问题:http://stackoverflow.com/questions/861722/mysql-insert-into-table-values-vs-insert-into-table-set。 – Marcus

回答

1

key是MySQL中的一个保留字。要将它用作列,每次调用它时都需要将其转义。

$sql = "INSERT INTO softversions SET `key`='$key'"; 
0

$sql = "INSERT INTO softversions(keyName) values('{$key}')";

+0

同样的错误:...语法使用附近'键'值('svksskjfvns')'在线1 –

2

KEY是MySQL中的reserved word,你需要使用反引号把它作为列名,还插入时,你不应该使用SET逃脱它。

$sql = "INSERT INTO softversions (`key`) VALUES ('$key')"; 
+0

该死,打我30秒! – Kaivosukeltaja

+0

@Kaivosukeltaja嘿嘿,我甚至包括一个参考文件;) – Marcus

+0

不,同样的东西 –