Как обновить 2 таблицы SQL и вычесть значения из данного действия - PullRequest
0 голосов
/ 09 мая 2018

Нужна ваша помощь с моим кодом. Страница предназначена для утверждения "leave application" Например, сотрудник подал заявку на "Sick Leave", и было подтверждено, что он вычтет 1 из sl_credit из таблицы user_info в моей базе данных, а также обновит замечания, примечания и статус до tblleaves table. Я получаю сообщение об ошибке «Ошибка обновления таблицы»

В моем коде я только что попробовал «Одобрено», чтобы проверить, работает ли он.

Я надеюсь, что кто-нибудь может мне помочь с этим. Я очень новичок в программировании и буду очень признателен за вашу помощь.

Заранее спасибо.

    <?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 голосов
/ 09 мая 2018

Вы должны включить все сообщение об ошибке, вы просто сообщаете нам сообщение об ошибке, которое вы закодировали в echo ...

Что касается людей, говорящих, что вы не можете обновить две таблицы одновременно, обычно это так, но в MySQL вы можете : http://sqlfiddle.com/#!9/d85e9/1

Я вижу три проблемы ...


У вас есть дополнительный , как раз перед предложением WHERE, удалите его ...

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

1020 *
*

Предложение 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...