【发布时间】:2018-04-13 14:40:11
【问题描述】:
是否可以将insert 和update 放在一个mysqli_multi_query 中。数据库更新,但值显示0。
$sql = "SELECT
e.*,
c.fee AS coursefee
FROM enrollment e
LEFT JOIN courses c ON e.course_id = c.course_id
WHERE c.course_id = '$courseId'
";
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_array($result);
$courseFee = $row['coursefee']; // 3500
// fees page
$sql_f = "SELECT * FROM fees WHERE studentid = '$studentId'";
$result_f = mysqli_query($con, $sql_f);
if(mysqli_num_rows($result_f) == 0){
$query = "INSERT INTO enrollment (student_id, course_id, batch_id, joiningdate) VALUES ('$studentId', '$courseId', '$batchId', '$joiningDate');";
$query .= "INSERT INTO fees (studentid, coursefee) VALUES ('$studentId','$courseFee')";
}
// The code below is not working.
else{
$query = "INSERT INTO enrollment (student_id, course_id, batch_id, joiningdate) VALUES ('$studentId', '$courseId', '$batchId', '$joiningDate');";
$query .= "UPDATE fees SET coursefee='$courseFee' WHERE studentid = '$studentId'";
}
mysqli_multi_query($con, $query);
if(mysqli_affected_rows($con) > 0){
$_SESSION['success'] = "New Enrollment is Successfully Created!";
header ("Location: ../../enrollments.php");
}
else {
echo "Records are NOT Added. Please try again<br />";
echo mysqli_error ($con);
}
【问题讨论】:
-
mysqli_affected_rows怎么知道你问的是哪一个? -
mysqli_multi_query带有变量可能会使您面临可怕的 SQL 注入。如果这是 PDO,我将使用事务单独执行查询。 -
我不确定我是否在这里得到了正确的上下文,但也许你可以使用:
INSERT ON DUPLICATE KEY UPDATEmariadb.com/kb/en/library/insert-on-duplicate-key-update