1

我有这个代码:

//insert user input into db
$query = "INSERT INTO test_details (test_title, user_id, likes)
VALUES ('$title', '$user_id', '0')";
$query .= "INSERT INTO test_descriptions (test_id, description)
VALUES (LAST_INSERT_ID(), '$description')";
if(isset($grade) && isset($difficulty) && isset($subject)) {
    $query .= "INSERT INTO test_filters (test_id, grade, subject, difficulty)
    VALUES (LAST_INSERT_ID(), '$grade', '$subject', '$difficulty')";
}
if(mysqli_multi_query($con, $query)) {
    echo 'Go <a href="../create">back</a> to start creating questions.';
}
else {
    echo "An error occurred! Try again later.";
    echo mysqli_error($con);
}

当我尝试执行代码时,我收到了这个 MySQL 错误: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 'SET @id = (SELECT LAST_INSERT_ID())INSERT INTO test_descriptions (test_id, descr' at line 2不确定做错了什么,所有的语法似乎都是正确的。谢谢。

4

1 回答 1

2

您的多查询语句中缺少分号。

您可以将它们添加到您要连接的查询前面 ( .=) 以保持一致性,因为 if 语句可能会或可能不会将查询添加到组合中。

//insert user input into db
$query = "INSERT INTO test_details (test_title, user_id, likes)
VALUES ('$title', '$user_id', '0')";
$query .= ";INSERT INTO test_descriptions (test_id, description)
VALUES (LAST_INSERT_ID(), '$description')";
if(isset($grade) && isset($difficulty) && isset($subject)) {
    $query .= ";INSERT INTO test_descriptions (test_id, grade, subject, difficulty)
    VALUES (LAST_INSERT_ID(), '$grade', '$subject', '$difficulty')";
}
if(mysqli_multi_query($con, $query)) {
    echo 'Go <a href="../create">back</a> to start creating questions.';
}
else {
    echo "An error occurred! Try again later.";
    echo mysqli_error($con);
}

或者正如 andrewsi 提到的,内爆方法:

//insert user input into db
$query[] = "INSERT INTO test_details (test_title, user_id, likes)
VALUES ('$title', '$user_id', '0')";
$query[] = "INSERT INTO test_descriptions (test_id, description)
VALUES (LAST_INSERT_ID(), '$description')";
if(isset($grade) && isset($difficulty) && isset($subject)) {
    $query[] = "INSERT INTO test_descriptions (test_id, grade, subject, difficulty)
    VALUES (LAST_INSERT_ID(), '$grade', '$subject', '$difficulty')";
}
if(mysqli_multi_query($con, implode( ';', $query ))) {
    echo 'Go <a href="../create">back</a> to start creating questions.';
}
else {
    echo "An error occurred! Try again later.";
    echo mysqli_error($con);
}
于 2013-08-30T19:33:53.543 回答