我的 PHPMyAdmin 中有一个数据库,它包含 2 个表:
网球场
法院ID
法院名称
预订费tenniscourts_Availability
法院ID
Court_dateBooked
我正在使用 PEAR 存储库编写 PHP 程序,并且正在努力创建允许我执行以下操作的代码:
仅当用户选择的日期尚未被其他用户占用时,才获取用户选择的球场预订日期并显示tennisCourts 表中的所有字段。我已在tenniscourts_Availability 表中输入了虚拟数据。
SELECT and DISPLAY all fields
from the tennisCourts table (courtID, courtName, bookingFee)
WHERE court_dateBooked = $CHOSEN_BOOKING_DATE
*($_GET is used here to retrieve the booking date enetered by
the user in a seperate html document.)
这是我当前的代码:-
$db_table_tennisCourts = "tennisCourts";
$court_ID = "courtID";
$court_Name = "courtName";
$booking_Fee = "bookingFee";
$db_table_tenniscourts_Availability = "tenniscourts_Availability";
$court_ID = "courtID";
$court_dateBooked = "court_dateBooked";
$CHOSEN_BOOKING_DATE = $_GET['user_dateField']; //GET's input data from user form in my other html document.
$database->setFetchMode(MDB2_FETCHMODE_ORDERED);
$myQuery = "SELECT $court_ID , $court_dateBooked FROM $db_table_ WHERE $CHOSEN_BOOKING_DATE != $court_dateBooked";
$queryResult =& $db->query($myQuery);
if (PEAR::isError($queryResult)) {
die($queryResult->getMessage());
}
while ($Col =& $queryResult->fetchRow()) {
echo $queryResult[0].' '; //shows courtID
$queryResult[1];
list($y,$m,$d)=explode('-',$queryResult[1]);
echo $d.'/'.$m.'/'.$y.'/<br/>';
}
?>
我对 PHP 和 SQL 还很陌生,所以如果我没有说清楚,请原谅我。我一直在网上研究,各种资料都说使用 SQL UNION OR JOIN?有人可以告诉我如何在我的场景中使用它们吗?我真的很感谢任何帮助。感谢您查看我的问题。
最佳答案
将您的查询更改为:
$myQuery = "
SELECT DISTINCT
c.courtID,
c.courtName,
c.bookingFee
FROM
tennisCourts c
INNER JOIN tenniscourts_Availability a ON c.courtID = a.courtID
WHERE
a.court_dateBooked = '". mysql_real_escape_string($CHOSEN_BOOKING_DATE) ."'
";
这将检索在指定日期预订的所有法庭的法庭信息。如果您想获取在指定日期未预订的所有法庭的信息,请使用以下查询:
$myQuery = "
SELECT
courtID,
courtName,
bookingFee
FROM
tennisCourts
WHERE
courtID NOT IN (SELECT courtID FROM tenniscourts_Availability WHERE court_dateBooked = '". mysql_real_escape_string($CHOSEN_BOOKING_DATE) ."'
";
关于您的代码需要注意的一些事项:
- 您用于表名称的 PHP 变量 (
$db_table_
) 似乎未定义。 - 不确定您是否有特殊原因这样做,但从您发布的代码来看,我认为不需要将列名存储在 PHP 变量中。它只会让你的例子中的事情变得困惑。
- 确保清理所有用户输入。直接使用来自
$_GET
的输入容易受到 SQL injection 的攻击。 .
关于php - 在 PHP 文档中使用 SQL 查询数据库中的 2 个不同表时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9979765/