我收到错误无法更新数据:您的SQL语法中有错误
问题描述:
请您帮我修复代码,以便我的SQL语句可以正常工作。我得到这个错误:我收到错误无法更新数据:您的SQL语法中有错误
Could not update data: 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 'INSERT INTO
student
(UoB Number
,First Name
,Last Name
, `Proposal' at line 1
我的代码如下:
if (isset($_POST['submit'])) {
$database = mysqli_connect("localhost", "root", "", "university"); //connection to database
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: ";
}
$uob_number = mysqli_real_escape_string($database, $_POST['uob_number']);
$first_name = mysqli_real_escape_string($database, $_POST['first_name']);
$last_name = mysqli_real_escape_string($database, $_POST['last_name']);
$proposal = mysqli_real_escape_string($database, $_POST['proposal']);
$qualification_normal = mysqli_real_escape_string($database, $_POST['qualification_normal']);
$qualification_masters = mysqli_real_escape_string($database, $_POST['qualification_masters']);
$faculty = mysqli_real_escape_string($database, $_POST['faculty']);
$sql = "INSERT INTO `student`(`UoB Number`, `First Name`, `Last Name`, `Proposal`, `Qualification_Normal`, `Qualification_Masters`, `Faculty`) VALUES ([$uob_number],[$first_name],[$last_name],[$proposal],[$qualification_normal],[$qualification_masters],[$faculty])";
$retval = mysqli_query($database,$sql);
if (!$retval) {
die('Could not update data: ' . mysqli_error($database));
}
echo "Updated data successfully\n";
mysqli_close($database); //closes connection
}
答
您的查询很多语法错误:
$sql = "INSERT [..snip...] VALUES ([$uob_number],[$first_name],[$last_name],[$proposal],[$qualification_normal],[$qualification_masters],[$faculty])";
^-----------^
MySQL不使用[]
分隔值。它使用'
。
答
问题:
您与您创建存储逃脱数据的新PHP变量混淆$ _ POST变量数组索引(其中使用方括号)。
解决方案:
更改以下行:
$sql = "INSERT INTO `student`(`UoB Number`, `First Name`, `Last Name`, `Proposal`, `Qualification_Normal`, `Qualification_Masters`, `Faculty`)
VALUES ([$uob_number],[$first_name],[$last_name],[$proposal],[$qualification_normal],[$qualification_masters],[$faculty])";
到
$sql = "INSERT INTO `student`(`UoB Number`, `First Name`, `Last Name`, `Proposal`, `Qualification_Normal`, `Qualification_Masters`, `Faculty`)
VALUES ('$uob_number','$first_name','$last_name','$proposal','$qualification_normal','$qualification_masters','$faculty')";
注意,支架已经VALUES子句中被删除,并用单引号代替。
如果您不满意,可以留下评论为什么?别的,这只是浪费downvotes。 – martin
@Martin基于downvotes的评论的离开已经在Meta上引起了广泛的争论。如果您将鼠标悬停在DV箭头上,您将看到DV的一些原因。 –