使用MySQL查询创建了一个值数组,我需要检查它们是否都至少等于给定的值,这是为了检查酒店的房间可用性。
首先,我做的MySQL查询:
foreach( $datearray as $value ) {
$query_avail = "SELECT cupo, ex_cupo.room_id FROM ex_cupo JOIN ex_rooms ON ex_cupo.room_id=ex_rooms.room_id AND ex_rooms.room_id = '$room_id' AND dt = '$value'";
$avail = mysql_query($query_avail, $MySQL_extranet) or die(mysql_error());
$row_avail = mysql_fetch_assoc($avail);
$availresult[] = $row_avail['cupo'];
}
“Cupo”是给定日期的可用房间数,因此$availresult将是一个日期范围内可用房间数的数组。
现在,如果有人想在这些日期预订(比如)两个房间,我需要确保数组中的每个值至少为2。例如,如果范围中有5个日期,它们是2,2,1,2,2,我需要返回false,但如果它们是2,2,2,2,2或2,2,3,2,2,我需要返回true。
我该怎么做呢?(我希望我解释得足够好。)
显然,选择2只是一个例子,它通常是一个名为$numrooms的变量。
4条答案
按热度按时间b0zn9rqh1#
在SQL代码中添加一个
WHERE cupo > 2
,让数据库只给予你想要的结果,而不是自己检查结果是否cupo〉2。如果你需要改变它,使用一个参数化的查询。详细信息请参见http://php.net/manual/en/security.database.sql-injection.php。
wgx48brx2#
如何传递$numrooms:
kcugc4gi3#
您应该将房间数作为一个条件传递给sql语句,例如:
因为第一个可能是PHP传递的值。
z31licg04#
如果你能在SQL级别上完成这个操作(如Andy所建议的),那将是最好的选择。然而,如果你需要在PHP中完成这个操作,你可以很容易地迭代你的数组,并在任何值低于你允许的最小值时设置一个标志为false: