gpt4 book ai didi

php - 使用 php 的 MYSQL 不会对数据进行排名,而 Root mysql 用户会

转载 作者:行者123 更新时间:2023-11-29 03:40:12 25 4
gpt4 key购买 nike

我的排名计算查询

SELECT @i := @i +1 AS rank, t . * 
FROM groups t, (

SELECT @i :=0
)foo

WHERE (
t.group_id = '1'
)
ORDER BY t.views DESC
)r
WHERE r.id =4

在 phpmyadmin 中以 root 身份登录,它会正确计算所有内容。通过 php 使用 php 的 mysql 帐户,输出计算不正确。它不计算排名,它获取所有行,找到我给它的 ID 的行号,然后它返回行号相对于它之前的所有行的位置。

因此,如果有 5 行,并且 r.id = 4 在表中的第 4 行,它会忽略 t.views 的顺序,只告诉我 id #4 是表中的第 4 个。 r.id = 1000 是表中的第 1000 个。它不会告诉我它的排名。当我以 root 身份运行查询时,它会正确地告诉我排名。

我假设需要授予 php mysql 用户某种权限才能使用 @'s?这是我唯一合乎逻辑的解释,似乎它无视逻辑。有人知道权限是什么吗?

最佳答案

创建每个新 session 时,用户变量将被丢弃。根据您在 PHP 代码中管理 session 的方式,您可能会在一个 session 中设置变量并尝试在另一个 session 中使用这些值 - 在这些 session 中它们不会被设置。

例如,如果您有一个命令行 mysql 客户端,您将看到以下行为:

mysql> set @x = 5;
mysql> select @x;
+------+
| @x |
+------+
| 5 |
+------+
mysql> quit
%
% mysql -u user -p
mysql> select @x;
+------+
| @xxx |
+------+
| NULL |
+------+

因此,请确保在一个用户 session 中设置和使用所有用户变量。

关于php - 使用 php 的 MYSQL 不会对数据进行排名,而 Root mysql 用户会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14959576/

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