MYSQLI UPDATE语法错误

时间:2014-03-01 18:56:03

标签: php syntax

我收到错误:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   'long ='附近 - 96.7812',label ='abc'WIERE id ='2''在第1行

这是我的代码:

$db=mysqli_connect($server,$username,$password,$dbname);
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
session_start();
$sql="UPDATE locations SET name='$_POST[modname]', lat='$_POST[modlat]', long='$_POST[modlong]', label='$_POST[modlab]' WHERE id='$_SESSION[locnid]'";
echo $sql;
if (!mysqli_query($db,$sql)) {
    die('Error: ' . mysqli_error($db));
}
echo "1 record modified";
mysqli_close($db);

回显的 $ sql 字符串是这样的:
UPDATE locations SET name='Baylor', lat='32.7923', long='-96.7812', label='abc' WHERE id='2'

我没有看到任何错误。
我试图逃避价值观(不认为它会有所帮助,但事实并非如此):
$sql="UPDATE locations SET name='".mysqli_real_escape_string($db, $_POST[modname])."', lat='".mysqli_real_escape_string($db, $_POST[modlat])."', long='".mysqli_real_escape_string($db, $_POST[modlong])."', label='$_POST[modlab]' WHERE id='$_SESSION[locnid]'";

我得到了同样的错误,并且回显了相同的$ sql字符串。

想想也许它与小写点混乱$ sql字符串赋值有关,但即使是整数我也会得到同样的错误。

请帮助 - 如果你能发现语法错误可能是什么!

2 个答案:

答案 0 :(得分:1)

您使用的列名称 long 是MySQL中的reserved word,将其包含在反引号中!

请参阅此处[查询中的一个例外]

g($db, $_POST[modlat])."', `long`='".mysqli_real_es
                           ^    ^ ----- Enclose it like this

答案 1 :(得分:0)

试试这个:

$sql="UPDATE locations SET name='$_POST[modname]', lat='$_POST[modlat]', `long`='$_POST[modlong]', label='$_POST[modlab]' WHERE id='$_SESSION[locnid]'";

列名long是MySQL中的保留字。它应该用反引号括起来。