我真的很难让我的代码正常工作,但我不明白为什么。
我的 PHPMyAdmin 中有一个数据库,它包含 2 个表:
网球场
法院ID
法院名称
预订费tenniscourts_Availability
法院ID
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字段的所有courtNames和BookingFee。仅当未预订时,我无法让它显示法庭名称和预订费。如果已预订,则应返回“抱歉,此日期未找到法院”。
我对 PHP 和 SQL 还很陌生,所以如果我没有说清楚,请原谅我。我一直在网上研究,各种资料都说使用 SQL UNION OR JOIN?有人可以告诉我如何在我的场景中使用它们吗?我真的很感谢任何帮助。感谢您查看我的问题。
最佳答案
试试这个:
$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,因此您应该为此使用准备好的语句。
关于php - 在 PHP 文档中使用 SQL 查询数据库中的两个表时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10092791/