从mysql列检索并回显多个值

时间:2014-06-08 01:38:38

标签: php mysql

我已在mysql表中创建了这3列,因此我可以列出每个用户的事务。

ticket_date, ticket_num, ticket_result

我还创建了一个函数来回显这些列中的值,并且它成功运行。

function.php:

$sql = "SELECT * 
        FROM members 
        WHERE user_id = '{$_SESSION['user_id']}'"; 
           $query = $this->db_connection->query($sql); 

           while ($row = $query->fetch_object()) { 
           global $me, $me2, $date; 
           $me = $row->ticket_num; 
           $me2 = $row->ticket_result; 
           $date = $row->ticket_date;  
           }

transactions.php

<table class="table">
<thead>
<th>Date</th>
<th>Ticket ID</th>
<th>Result</th>
</thead>
<tr>
<td><?php echo $date; ?> </td>
<td><?php echo $me; ?> </td>
<td><?php echo $me2; ?> </td>
</tr>
</table>

我现在的问题是,如果用户有多个事务,我将如何分别回显特定列中的每个值。我试图将每个事务回应成一个。 我能将每个值存储为数组,以便我可以这样称呼它吗?

$row->ticket_num['0']  

编辑:我想问一下如何将交易存储到各自的列中。比如存储多个适用于每个事务的$ ticket_date。我可以将信息作为数组存储到列中,以便我可以使用数组指针调用每个事务吗?

2 个答案:

答案 0 :(得分:1)

我认为最好的办法是不使用全局变量,除非有任何理由说你的函数无法返回这些数据,即它返回其他内容。你可以在function.php中找到类似的东西:

$sql = "SELECT * 
        FROM members 
        WHERE user_id = '{$_SESSION['user_id']}'"; 
           $query = $this->db_connection->query($sql); 
           $return = array();

           while ($row = $query->fetch_object()) { 
            array_push($return, array($row->ticket_num, $row->ticket_result, $row->ticket_date ));
           }
        return $return

然后你可以在transactions.php中执行此操作:

<table class="table">
<thead>
<th>Date</th>
<th>Ticket ID</th>
<th>Result</th>
</thead>
<?php
$ticket = Whatever_Function();
foreach($ticket as $t){
echo"<tr> <td> ".$t[0]." </td><td>".$t[1]."</td><td>".$t[2]."</td></tr>";
}
?>
</table>

修改

关于评论中的其他问题,应该设置这样的数据库结构:

DB Structure

通过执行此操作,您将它分开,以便每个表都属于一个事物或动作。然后,这些可以使用SQL Join这样彼此相关:

SELECT * FROM Transactions tr
JOIN Users u ON u.UID = tr.UID
JOIN Tickets ti ON ti.TID = tr.TID

通过查看上面的SQL代码片段,您应该能够看到它如何匹配不同表上的列。这会创建一个大的虚拟表,然后您可以搜索其中的列名,其列名前面带有给定的假名。

因此,如果您想获得购买价格超过20英镑的机票的所有人的电子邮件地址,即使您需要的表格没有直接连接,您也可以这样做:

SELECT u.email FROM Transactions tr
JOIN Users u ON u.UID = tr.UID
JOIN Tickets ti ON ti.TID = tr.TID
WHERE ti.Price > 20

答案 1 :(得分:0)

做这样的事情:

global $me, $me2, $date; 
while ($row = $query->fetch_object()) { 
    $me[] = $row->ticket_num; 
    $me2[] = $row->ticket_result; 
    $date[] = $row->ticket_date;  
}

transactions.php

<table class="table">
<thead>
<th>Date</th>
<th>Ticket ID</th>
<th>Result</th>
</thead>
<?php foreach($me as $k => $m){ 
    echo "<tr>";
    echo "<td>".$date[$k]."</td>";
    echo "<td>".$m."</td>";
    echo "<td>".$me2[$k]."</td>";
    echo "</tr>";
?>
</table>