我无法解决此问题。数据库中有2个不同的表,其中1个称为USERS的表是TICKETS。当用户注册该信息存储在USERS表中时,只有注册用户才喜欢打开支持的票证。当用户打开票证时,该信息将存储到TICKETS表中。现在的问题是,当某个随机用户想要查看票证状态时,他们显示存储在TICKET表中的所有票证,这就是我们所不想要的,我们只想显示已登录用户的票证状态。下面的代码示例:
在ticket-status.php上用于预览数据的页面代码是:
<?php
include('connection.php');
$result = $db->prepare("SELECT * FROM tickets JOIN users WHERE users.email=tickets.email");
$result->execute();
for($i=0; $row = $result->fetch(); $i++){
?>
<tr>
<th scope="row"><?php echo $row['ticket_id'] ?></th>
<td><?php echo $row['item_selected'] ?></td>
<td><?php echo $row['help_selected'] ?></td>
<td><?php echo $row['message'] ?></td>
<td><?php echo $row['status'] ?></td>
</tr>
<?php
}
?>
这是用户数据库的外观:
ID - FIRST NAME - LAST NAME - EMAIL - PASSWORD - PHONE - CREATED - MODIFIED
1 Greg McFe u@g.com 123 123 date date
2 Roy McDs a@g.com 133 222 date date
3 Tina MCda g@g.com 333 111 date date
票证的数据库是:
TICKET_ID - ITEM_SELECTED - HELP_SELECTED - EMAIL - PHONE - MESSAGE - STATUS
1 theme2 problem u@g.com 123 msg1 open
2 theme12 errors a@g.com 222 msg12 open
3 theme8 solution g@g.com 333 msg9 closed
我需要什么。在随机用户登录并查看其票务状态时,在ticket-status.php页面上,显示其打开的票证。示例:
TICKET ID - ITEM SELECTED - HELP SELECTED - MESSAGE - STATUS
2 theme12 errors msg12 open
答案 0 :(得分:5)
您需要通过将结果添加到您的WHERE
子句中来将结果限制为仅登录的用户。
我从您的代码中看不到您知道登录用户的EMAIL,但是我认为您必须以某种方式知道这一点
SELECT *
FROM tickets
JOIN users ON users.EMAIL = tickets.EMAIL
WHERE user.EMAIL = <the logged in users EMAIL>
出于多种原因,最好将
ID
个用户放到Tickets
表中,而不是users
表,所有人都将继续工作。现在,您还需要修改其所有Tickets
。
答案 1 :(得分:-1)
您忘记将其限制为该特定用户的票证了:
$result = $db->prepare("SELECT * FROM tickets JOIN users WHERE users.email=tickets.email AND users.phone=tickets.phone AND users.id=?");
$result->bind_param('i', $id);
$result->execute();