gpt4 book ai didi

php - mysql中的临时表问题

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

我正在编写一些报告,并且认为我需要使用临时表。我的代码执行 api 调用来获取当天与该系统交互的所有用户 cookie。

现在我有一个表,其中包含所有 cookie 和它们使用的浏览器类型,我可以循环遍历 api 提供的 cookie 数组,并对每个浏览器进行 sql 查找并递增计数器,因此最后我可以报告不同浏览器的浏览器访问次数。

但是,正如您可以想象的,如果有分配的 cookie(确实有),这可能需要很长时间。

据我所知,解决方案是创建一个传递给我的 cookie 的临时表,并将其内联到我的 cookie 数据表,然后执行

select count(id),broswer ... group by browser

下面是我想要尝试做的事情的更多代码 View :

$json = file_get_content($apiURL);
$cookies = '';
foreach($json as $val){$cookies .= ','.$val['cookie']; }
$cookies = substr($cookies,1);

mysql_query('CREATE TEMPORARY TABLE passedcookies (
`cookie` varchar(200) NOT NULL,
PRIMARY KEY(cookie)
) values ($cookies);')

mysql_query('SELECT count(cd.id), cd.browser FROM cookiedata cd
INNER JOIN passedcookies pc
ON pc.cookie = cd.cookie
GROUP BY cd.browser;');

mysql_query('DESTROY TEMP TBL;');

我必须销毁临时表吗?什么时候被摧毁?如果 3 个用户运行该报告,每个用户都会获得自己的临时表?

感谢您的帮助

最佳答案

如果您愿意,您可以销毁临时表。如果不这样做,当您的 MySQL 连接关闭时,它会自动销毁。除非您使用共享连接,否则当 PHP 脚本退出时就会发生这种情况。

如果您不使用共享连接,则每个用户将获得自己的临时表。

附注您创建临时表的 SQL 语法是错误的,但您没有询问这一点。 CREATE TEMPORARY TABLE 中没有 VALUES 子句,该子句属于您在其后使用的 INSERT 语句。

实际上,对于您正在做的事情,我认为您不需要临时表。查询:

SELECT browser, count(*)
FROM cookiedata
WHERE cookie in ($cookies)
GROUP BY browser

应该可以正常工作。我认为 MySQL 很好地实现了 IN (list)

关于php - mysql中的临时表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18496815/

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