我真的很难让我的代码工作,我不知道为什么。
我的 PHPMyAdmin 中有一个数据库,它包含 2 个表:
-
网球球场
法院身份证
法院名称
预订费
-
tenniscourts_Availability 法院身份证
court_dateBooked
正在使用PEAR存储库编写PHP程序,并且正在努力创建允许我执行以下操作的代码:
仅当法院名称尚未被其他用户预订时,才显示所有法院名称及其相应的预订费用基于用户的搜索日期。
这是我当前的代码:-
$CHOSEN_BOOKING_DATE = $_GET['user_dateField']; //GET's input data from user form in my other html document.
$database->setFetchMode(MDB2_FETCHMODE_ASSOC);
$myQuery = "SELECT * FROM tennisCourts, tenniscourts_Availability WHERE court_dateBooked != $CHOSEN_BOOKING_DATE";
$queryResult =& $db->query($myQuery);
if (PEAR::isError($queryResult)) {
die($queryResult->getMessage());
}
echo '<table>';
while ($Col =& $queryResult->fetchRow()) {
echo '<td>'.$queryResult['courtName'].'</td>';
echo '<td>'.$queryResult['bookingFee'].'</td>';
echo '<td>'.$queryResult['court_dateBooked'].'</td>';
}
?>
上面的代码显示了我数据库中所有court_dateBooked字段的所有法院名称和预订费。我无法让它显示法院名称和预订费用,只有当它没有被预订时。如果已预订,则应返回"对不起,此日期没有找到法院"。
我仍然是PHP和SQL的新手,所以如果我没有说清楚,请原谅我。我一直在网上研究,各种消息来源说使用 SQL UNION 还是加入?有人可以启发我如何在我的场景上下文中使用它们吗?我真的很感激任何帮助。感谢您查看我的问题。
试试这个:
$myQuery = "
SELECT c.courtName
, c.bookingFee
, a.court_dateBooked
FROM tennisCourts AS c
LEFT JOIN tenniscourts_Availability AS a ON c.id = a.courtID
WHERE a.court_dateBooked != '" . $CHOSEN_BOOKING_DATE ."'";
在执行查询之前,请确保正确清理和转义$CHOSEN_BOOKING_DATE
。由于看起来您正在使用PDO,因此您应该为此使用预准备语句。