如何在PHP中多次在SQL查询中漫游

时间:2011-03-29 15:01:18

标签: php mysql sql

我的一位朋友问我一个我不知道怎么回答的问题。

问题是他想要多次使用查询的结果集。每当他想要的时候。

附加了示例表和示例输出。

我只会查询两次:

Select * from ornek1_ust
Select * from ornek1_alt

是否可以在我们已经使用PHP的结果集中漫游,以获得一些输出,如示例输出。我想用完整数据查询数据库一次。然后我想随时随地使用它。

示例表:

Database Table 1: ornek1_ust

Database Table 2: ornek1_alt

示例输出:

Example output

3 个答案:

答案 0 :(得分:0)

听起来您希望使用mysql_result()能够随意从结果集中提取数据。

如果您想循环遍历整个数据集并仍然可以再次循环,则可以使用mysql_data_seek()将内部指针设置回到开头。

答案 1 :(得分:0)

只需将查询结果存储在数组....

$sql = "Select * from ornek1_ust";
$results = array();
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) {
    $results[] = $row;
}

// Use $results further on in your code

答案 2 :(得分:0)

您希望在PHP中“缓存”结果。要获取数据,您需要进行简单的连接查询:

SELECT ornek_ust1.isim AS ust, ornek1_alt.ism AS alt
FROM ornek_ust1
JOIN ornek1_alt ON ornek_ust1.id = ornek1_alt.ust_ID
ORDER BY ornek_ust1.isim, ornek1_alt.ism

在PHP中,执行以下操作:

$data = array();

$sql = "SELECT ...";
$res = mysql_query($sql) or die(mysql_error());

while($row = mysql_fetch_assoc($res)) {
   $data[$row['ust'][] = $row['alt'];
}

将构建一个看起来像您想要的数据的数组:

$data = array(
    'ust data1' => array(
           0 => 'alt data 1'
           1 => 'alt data 2'
    ),
    'ust_data2' => ... etc...
)