错误:您的SQL语法出错;查看与MySQL服务器版本对应的手册,以便在第1行
'Order, Name, URL, UserName, Password, SiteName, Notes) VALUES ('','','','','','
附近使用正确的语法
sql与工作插入查询完全相同;除了字段/表名。
以下是代码:
<?php
$con = mysqli_connect('HOST', 'USER', 'PASS','DATABASE');
if (!$con)
{
die('Could not connect: ' . mysqli_error());
}
$sql="INSERT INTO RemoteLinks (Order, Name, URL, UserName, Password, SiteName, Notes) VALUES('$_POST[Order]','$_POST[Name]','$_POST[URL]','$_POST[UserName]','$_POST[Password]','$_POST[SiteName]','$_POST[Notes]')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
header('Location: ' . $_SERVER['HTTP_REFERER']);
mysqli_close($con);
?>
不太清楚为什么它不能在类似的查询中工作。感谢您的帮助,感谢它。
答案 0 :(得分:6)
ORDER 是 order by 子句中使用的保留字 - 带反引号的环绕声“`”
<强>更新强>
以下是 Reserved Words in MySQL 的列表。
您通常希望避免使用反引号来逃避这些保留字,因为反引号会降低代码的可移植性。因此,您可能需要学习这些内容并使用其他词来表示列名,表,数据库等。
重要强>
您一定要使用 mysqli_prepare() 和 mysqli_stmt_bind_param() !
答案 1 :(得分:1)
您需要使用返回刻度`来保留列名(Order)和准备SQL语句以执行并绑定参数以防止sql注入:
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "my_database");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$insertQuery = 'INSERT INTO RemoteLinks (`Order`, Name, URL, UserName, Password, SiteName, Notes) '.
'VALUES (?, ?, ?, ?, ?, ?, ?)';
if ($stmt = $mysqli->prepare($insertQuery))
{
$stmt->bind_param(
"sssssss",
$_POST['Order'],
$_POST['Name'],
$_POST['URL'],
$_POST['UserName'],
$_POST['Password'],
$_POST['SiteName'],
$_POST['Notes']);
$stmt->execute();
$stmt->close();
}
$mysqli->close();
?>