如何显示已预订用户的电子邮件

时间:2014-04-16 14:04:28

标签: php mysqli

我正在创建一个小型“时段”预订应用程序。

但是我在显示已预订特定时间段的用户时遇到了一些问题。

这个想法是,有一个名为Reserve的链接,当没有预订时,会出现一条文字:预订者:[用户发送电子邮件]

方式是显示我的时间链接是这样的:

$sql = "SELECT * FROM bookings WHERE room_id= '".$room_id."' AND eventDate='".$dateToCompare."'AND timeslot = $time;";

    $result = $db->mysqli->query ( $sql );

    if (mysqli_num_rows ( $result ) == 0) {
        echo "<a href='" . $_SERVER ['PHP_SELF'] . "?id=" . $room_id . "?month=" . $month . "&day=" . $day . "&year=" . $year . "&t={$time}&v=true&f=true&reserved=true'><h3 style='color: rgb(255,0,0);'>Reserve</h3></a>";
    } else {
        echo  $user->getEmail();
        while ( $row = mysqli_fetch_array ( $result ) ) {
            echo "<br />";
        }
    }

如您所见,如果有任何预订,我会回复function $user->getEmail();

我试图这样做是我的功能。

public function getEmail() {
            $str = "SELECT bookings.*, users.email AS booking_email FROM bookings, users WHERE bookings.user_id = users.id";
            $result = $this->db->mysqli->query ($str);
            $string = "";
            while ( $row = $result->fetch_assoc () ) {
                $string .= $row ['booking_email'];
            }
            return $string;
        }

但正如你可以想象的那样,回应我数据库中的每一封电子邮件。

我想我的SQL查询需要更多内容吗?

您可以在此处查看我的外键关系:

enter image description here

我希望你们中的一些人能指出我正确的方向。请告诉我是否需要提供更多代码。

编辑:

这就是我创建预订的方式:

if (isset ( $_GET ['reserved'] )) {
    $sqlreserve = "INSERT INTO bookings (user_id, room_id, eventDate, timeslot) VALUES ('" . $user_id . "','" . $room_id . "','" . $dateToCompare . "','" . intval ( $_GET ['t'] ) . "');";
    $resultreserve = $db->mysqli->query ( $sqlreserve );
    echo $resultreserve;
}

1 个答案:

答案 0 :(得分:1)

明确定义您的联接,而不是使用隐式联接。它使SQL更容易理解并避免错误。

如果您调整了第一个SQL语句,则可以获取具有房间可用性的用户电子邮件地址(如果可用)。

SELECT
    `bookings`.*,
    `users`.`email` AS booking_email
FROM `bookings`
LEFT OUTER JOIN `users`
    ON (`bookings`.`user_id` = `users`.`id`)
WHERE
        `room_id`   = '".$room_id."'
    AND `eventDate` = '".$dateToCompare."'
    AND `timeslot`  = '".$time."'