PHP预订系统 - 冲突检查后插入记录

时间:2014-04-27 18:35:37

标签: php sql insert

我正在尝试一个模拟预订系统,并且正在努力让记录正确插入

这是按下“Book”按钮时调用的函数:

function bookAppointment($clientName, $aptDate, $aptTime, $aptDetails, $withWho) {
global $db;

//Ensure there are no conflictions
$confSQL = "SELECT aptDate,aptTime,withWho FROM appointments";
$confQuery = mysqli_query($db, $confSQL);

$data = array();
while($row = mysqli_fetch_array($confQuery)) {
    if($row[0] == $aptDate) {
        if($row[1] == $aptTime) {
            if($row[2] == $withWho) {
                header("Location: dashboard.php?error=booking_confliction");
            } else {
                addAppointment($clientName, $aptDate, $aptTime, $aptDetails, $withWho);
            }
        } else {
            addAppointment($clientName, $aptDate, $aptTime, $aptDetails, $withWho); //Using another function makes repeated code considerably tidier
        }
    } else {
        addAppointment($clientName, $aptDate, $aptTime, $aptDetails, $withWho);
    }
  }
}

这是'addAppointment'功能:

function addAppointment($clientName, $aptDate, $aptTime, $aptDetails, $withWho) { //Makes error checking easier
global $db;

$sql = "INSERT INTO appointments VALUES $clientName,$aptDate,$aptTime,$aptDetails,$withWho";
$result = mysqli_query($db, $sql);

if($result) {
    header("Location: dashboard.php");
} else {
    header("Location: dashboard.php?error=sql_error");
}
}

问题在于根本没有添加任何东西,但我很确定if语句检查正常,除非我只是失明。有什么建议吗?

修改

SQL语句更改解决了问题;

"INSERT INTO appointments`(clientName, aptDate, aptTime, aptDetails, withWho) VALUES ('$clientName','$aptDate','$aptTime','$aptDetails', (SELECT userId FROM users WHERE userId='$withWho'))"

1 个答案:

答案 0 :(得分:0)

问题通过SQL语句更改解决了;

"INSERT INTO appointments`(clientName, aptDate, aptTime, aptDetails, withWho) VALUES ('$clientName','$aptDate','$aptTime','$aptDetails', (SELECT userId FROM users WHERE userId='$withWho'))"