我收到此错误: SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以便在'INSERT INTO student_details(第2行的student_id,first_name,last_name,dob,address_lin')附近使用正确的语法
代码:任何想法?
//create variables from each value that was submitted from the form */
$student_info_id = $_POST['student_info_id'];
$class_id = $_POST['class_id'];
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$dob = $_POST['dob'];
$address_line_1 = $_POST['address_line_1'];
$address_line_2 = $_POST['address_line_2'];
$town = $_POST['town'];
$county = $_POST['county'];
$postcode = $_POST['postcode'];
$gender = $_POST['gender'];
$ethnicity = $_POST['ethnicity'];
try {
$conn = new PDO("mysql:host=$host; dbname=$dbname", $user, $password);
$conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "
INSERT INTO student_info (student_info_id, class_id) VALUES (:student_info_id, :class_id)
INSERT INTO student_details (student_id, first_name, last_name, dob, address_line_1, address_line_2, town, county, postcode, gender, ethnicity, student_info_id)
VALUES (:student_id, :first_name, :last_name, :dob, :address_line_1, :address_line_2, :town, :county, :postcode, :gender, :ethnicity, :student_info_id)
";
$statement = $conn->prepare($sql);
$statement->bindValue(":student_info_id", $student_info_id);
$statement->bindValue(":class_id", $class_id);
$statement->bindValue(":student_id", $student_id);
$statement->bindValue(":first_name", $first_name);
$statement->bindValue(":last_name", $last_name);
$statement->bindValue(":dob", $dob);
$statement->bindValue(":address_line_1", $address_line_2);
$statement->bindValue(":address_line_2", $address_line_1);
$statement->bindValue(":town", $town);
$statement->bindValue(":county", $county);
$statement->bindValue(":postcode", $postcode);
$statement->bindValue(":gender", $gender);
$statement->bindValue(":ethnicity", $ethnicity);
$statement->bindValue(":student_info_id", $student_info_id);
$count = $statement->execute();
$conn = null; // Disconnect
}
catch(PDOException $e) {
echo $e->getMessage();
}
答案 0 :(得分:0)
您必须使用INSERT
完成第一个;
,如下所示:
INSERT INTO student_info (
student_info_id,
class_id
) VALUES (
:student_info_id,
:class_id
); <-- a semicolon is the default statement separator, use it
....
请注意,虽然可以一次运行多个查询,但我不建议您这样做。如果您逐个运行每个查询,您可以更好地控制错误。
答案 1 :(得分:0)
我不确定PDO是否支持多个语句,但如果是这样,则错误是您没有终止第一个语句,
INSERT INTO student_info (student_info_id, class_id)
VALUES (:student_info_id, :class_id);
^ add this one
答案 2 :(得分:-1)
您无法在一次通话中运行多个查询 单独运行它们。