如何更新2个SQL表并从给定的操作中扣除值

时间:2018-05-09 10:54:28

标签: php sql mysqli

需要我的代码帮助。 该页面用于批准"leave application" 例如,员工已申请"Sick Leave"并且已获批准它将从sl_credit中扣除1,该tblleaves table来自我的数据库上的user_info表,并且还将更新备注,显着和状态{ {1}}。 我收到一条错误消息"错误更新表"

在我的代码中,我只是尝试了#34;已批准"测试它是否正常工作。

我希望有人可以帮助我。我对编程很陌生,非常感谢你的帮助。

提前致谢。

    <?php

$uid = $_GET['ref'];

$leavetype = $_GET['leavetype'];
$adminremark = $_POST['adminremark'];
$status = $_POST['status'];
$adminremarkdate = $_POST['adminremarkdate'];
$date = date("Y-m-d H:i:s");


include '../db_config/connection.php';

if ($leavetype == "Sick Leave" || $status == "Approved") {

$sql = "UPDATE tblleaves, user_info SET adminremark='$adminremark', status='$status', adminremarkdate = '$date', user_info.sl_credit=user_info.sl_credit-1, WHERE id='$uid'";

}elseif ($leavetype == "Vacation Leave" || $status == "Approved") {
    $sql = "UPDATE tblleaves, user_info SET adminremark='$adminremark', status='$status', adminremarkdate = '$date', user_info.vl_credit=user_info.vl_credit-1, WHERE id='$uid'";
}


if ($conn->query($sql) === TRUE) {
    header("location:leave-details.php?ref=$uid");
} else {
    echo "Error updating record: " . $conn->error;
}
$conn->close();

?>

1 个答案:

答案 0 :(得分:0)

您应该包含整个错误消息,您只是告诉我们您编入echo的错误消息...

至于那些说你不能同时更新两个表的人,通常这是真的,但在MySQL中你 可以 http://sqlfiddle.com/#!9/d85e9/1

我能看到的三个问题是......


您的,条款之前还有一个额外的WHERE,请将其删除......

user_info.sl_credit=user_info.sl_credit-1, WHERE id='$uid'
                                         ^


WHERE子句需要引用两个正在更新的表......

WHERE user_info.id = '$uid' AND tblleaves.user_id = user_info.id

(或类似)


此外,您有SET adminremark='$adminremark', 正在更新的每个 列都应指定该表...

SET tblleaves.adminremark='$adminremark', etc, etc

OR

SET user_info.adminremark='$adminremark', etc, etc