gpt4 book ai didi

php mysql 保存查询结果

转载 作者:行者123 更新时间:2023-11-29 00:55:41 24 4
gpt4 key购买 nike

我有一个查询是这样的:

            $get_feed_amount = mysql_query("

SELECT COUNT(*) as num
FROM `migo_feeds`
WHERE
(
(
feed_type='10' ||
feed_type='11' ||
feed_type='28' ||
feed_type='27' ||
feed_type='30' ||
feed_type='31'

)
AND
(
from_id IN (

SELECT DISTINCT from_id
FROM `migo_relations`
WHERE (
(to_id='".$_SESSION['user_id']."')

AND

(rel_processed='1' AND rel_accepted='1')
)

)

OR

to_id IN (

SELECT DISTINCT from_id
FROM `migo_relations`
WHERE (
(to_id='".$_SESSION['user_id']."')

AND

(rel_processed='1' AND rel_accepted='1')
)

)

OR

from_id=".$_SESSION['user_id']."

OR

to_id=".$_SESSION['user_id']."

)
AND
feed_deleted='0'
);

");

如您所见,我已经在此查询中选择了两次 friend

后来我也做了这样的查询:

            $migo_groups = mysql_query("

SELECT
group_id,
group_title,
group_desc,
group_cat_name,
group_area,
group_city,
group_quarter,
group_pic,
group_tmb,
group_members_amount
FROM
`migo_groups`
WHERE (

group_type=1

AND

group_id IN (

SELECT group_id
FROM `migo_group_membership`
WHERE (

membership_type IN (1,2,3)

AND

to_id IN (

SELECT DISTINCT from_id
FROM `migo_relations`
WHERE (
(to_id='".$_SESSION['user_id']."')

AND

(rel_processed='1' AND rel_accepted='1')
)
)
)
)
)
ORDER BY RAND() LIMIT 4;
");

再次选择 friend ..这似乎有点浪费资源。尤其是如果表非常大,可能需要很长时间才能加载,甚至根本无法加载。

我的问题是,我可以在开始时只做一个 friend 查询并在所有地方使用结果吗?那有什么好处吗?

我在想也许可以将结果保存在数组或其他东西中,这样不好吗?运行事物的最佳方式是什么?

问候,亚历山大

最佳答案

您可以将第一个查询的结果保存在一个数组中,然后仅将该数组用于您的第二个需要。

例子:

$result=array();
$query=mysql_query("SELECT complex sql [...]");
while($r = mysql_fetch_assoc($query)) {
$result[] = $r;
/*your first operation here*/
}

现在您的结果中包含了第一个查询的所有结果,您可以使用该数组执行第二个操作,而无需其他查询。

foreach($result as $row) {
// code
}

另请注意,您应该使用 PDO。

关于php mysql 保存查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6264578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com