php - 在 PHP 文档中使用 SQL 查询数据库中的 2 个不同表时遇到困难

标签 php mysql sql pear

我的 PHPMyAdmin 中有一个数据库,它包含 2 个表:

  1. 网球场
    法院ID
    法院名称
    预订费

  2. 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) ."'
";

关于您的代码需要注意的一些事项:

  1. 您用于表名称的 PHP 变量 ($db_table_) 似乎未定义。
  2. 不确定您是否有特殊原因这样做,但从您发布的代码来看,我认为不需要将列名存储在 PHP 变量中。它只会让你的例子中的事情变得困惑。
  3. 确保清理所有用户输入。直接使用来自 $_GET 的输入容易受到 SQL injection 的攻击。 .

关于php - 在 PHP 文档中使用 SQL 查询数据库中的 2 个不同表时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9979765/

相关文章:

php - 将所有 Mysql 值相加 PHP

php - 使用 PHP Session 将数据从一个页面传递到另一个页面

php - 如何从 URL 中检索值?

mysql - 在Mysql中加载inFile数据

mysql - #1005 mysql错误keys错误

sql - 在分组/聚合期间连接/合并数组值

php - fatal error : Call to a member function query() on a non object

php - codeigniter order by desc 对于超过 2 或 3 位数字无法正常工作

python - macos Django 找不到 mysqlclient

java - Hibernate 标准在 Web 应用程序中花费的时间太长,但在 SQLPlus 中却很快?