我正在建立一个预订系统,用户必须无法预订其他预订。
提供三个变量,开始日期,结束日期和产品ID。我需要检查建议预订的开始日期和结束日期之间的差距是否与旧预订重叠。
以前,我使用的是MySQL的BETWEEN
,但我意识到只有当用户尝试在现有预订中预订时才能使用,但是如果某人提前预订,结束的时间晚于旧的预订,那么它就会通过。< / p>
private
function is_available($product, $from, $end)
{
if (!$from || !$end) return false;
global $wpdb;
$table = $wpdb->prefix . "ovalbit_utils";
$sql = "SELECT * FROM $table WHERE booking=$product AND ('$from' between `start` and `end`) OR ('$end' between `start` and `end`)";
$rows = $wpdb->get_results($sql);
return ($rows == null) ? true : false;
}
有什么想法吗?
答案 0 :(得分:1)
尝试添加第三个OR子句,如下所示:
$sql = "SELECT * FROM $table WHERE booking=$product AND (('$from' between `start` and `end`) OR ('$end' between `start` and `end`)) OR (('$from'<`start`) AND ('$end'>`end`)) ";
答案 1 :(得分:1)
//尝试此查询
$ sql =“SELECT * FROM $ table WHERE booking = $ product AND(('$ from from start
和end
)OR('$ end'在start
之间end
))“;