需要我的代码帮助。
该页面用于批准"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();
?>
答案 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