我收到错误:
您的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字符串赋值有关,但即使是整数我也会得到同样的错误。
请帮助 - 如果你能发现语法错误可能是什么!
答案 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中的保留字。它应该用反引号括起来。