MYSQL Innerjoin只显示一条记录

时间:2018-02-07 08:07:04

标签: php mysql pdo

我正忙着一个票证系统,我在表格中有问题,在另一张表格中有用户信息,在另一张表格中有回应。

我想要的是通过用户ID和所有回复(也包括id的用户信息)获取用户信息的问题(表1)

现在我有以下代码:

  public function ticketSingle($id=""){
  $sql = "
  SELECT ticketSubmitted.*, users.Name, users.email, users.phone, ticketResponse.*
  FROM ticketSubmitted

  INNER JOIN users
  ON users.id = ticketSubmittedUserId

  JOIN ticketResponse
  ON ticketId = ticketSubmittedID

  WHERE ticketSubmittedID = '".$id."'
  ";

  $result = $this->run($sql, $bind);
  return $result[0];
}

表1 = ticketSubmitted(问题,用户ID“ticketSubmittedUserId”)
表2 =用户(用户信息)
表3 = ticketResponse(带反应的表)

但如果我打印结果我只得到一张TicketResponse的记录,我想要的就是所有的反应。

有人能帮助我吗?

这是函数返回的内容:

Array
(
    [ticketSubmittedID] => 1
    [ticketSubmittedUserId] => 1
    [ticketSubmittedDate] => 2018-02-05 16:00:00
    [ticketSubmittedTitle] => Question Title
    [ticketSubmittedMessage] => Hello World!
    [ticketSubmittedUserIp] => XXX.XXX.XXX.XXX
    [ticketSubmittedStatus] => 1
    [Name] => John Doe
    [email] => john@doe.com
    [phone] => 0612345678
    [ticketResponseId] => 1
    [ticketId] => 1
    [ticketUserId] => 2
    [ticketMessage] => Hello Reaction
    [ticketDate] => 2018-02-05 17:05
    [ticketIp] => XXX.XXX.XXX.XXX
)

1 个答案:

答案 0 :(得分:2)

您只返回结果的第一个索引中的第一行return $result[0]; 0。所以你应该返回所有例如:

return $result;

并循环结果以管理您需要的内容

 foreach($result as $key => $value){
  echo $value['ticketResponseId'];     
 }

您可以使用

查看实际退货内容
 var_dump($result);