我有一个表单,用户可以填写该表单来更改数据库中的条目。该条目是一个特定的转变(如周一从0900 - 1000)。
javascript和ajax从表单中获取正确的信息(使用console.log
和.alert
进行检查),但是当页面刷新时,数据库条目尚未更改。
以下是处理数据的PHP:
include_once 'db_connect.php';
include_once 'psl_config.php';
include_once 'functions.php';
$error_msg = "";
if (isset($_POST['uid'], $_POST['old_day'], $_POST['old_start'], $_POST['old_end'], $_POST['day'], $_POST['start_time'], $_POST['end_time'])) {
$new_start = standard_to_military($new_start);
$new_end = standard_to_military($new_end);
$uid = filter_var(INPUT_POST, 'uid', FILTER_VALIDATE_INT);
$old_day = filter_var(INPUT_POST, 'old_day', FILTER_VALIDATE_INT);
$old_start = filter_var(INPUT_POST, 'old_start', FILTER_VALIDATE_INT);
$old_end = filter_var(INPUT_POST, 'old_end', FILTER_VALIDATE_INT);
$day = filter_var(INPUT_POST, 'day', FILTER_VALIDATE_INT);
$new_start = filter_var(INPUT_POST, 'start_time', FILTER_VALIDATE_INT);
$new_end = filter_var(INPUT_POST, 'end_time', FILTER_VALIDATE_INT);
if(!filter_var(INPUT_POST, 'day', FILTER_VALIDATE_INT) || !filter_var(INPUT_POST, 'start_time', FILTER_VALIDATE_INT) || filter_var(INPUT_POST, 'end_time', FILTER_VALIDATE_INT)) {
$error_msg .= '<p class="error"> The data entered is in an incorrect format.</p>';
var_dump($error_msg);
}
else {
$stmt = "UPDATE schedule SET day = ?, start_time = ?, end_time = ?
WHERE tutor_id = ?
AND day = ?
AND start_time = ?";
$stmt->bind_param('iiiiii', $day, $new_start, $new_end, $uid, $old_day, $old_start);
$stmt->execute();
if ($stmt->errno) {
//header('../error.php?err='.$stmt->error);
$error_msg .= "FAILURE TO UPDATE";
var_dump($error_msg);
$stmt->close();
}
else {
$stmt->close();
}
}
}
这个想法是表单发送与用户正在更改的班次相对应的隐藏输入值,数据库找到该班次并将条目更新为用户放入表单中的数据。
我不知道为什么数据库没有记录更改,因为我使用ajax,我看不到php脚本的var_dump,看看是否有问题。