【问题标题】:MySQL query returns 0 rows in PHP, actual records in phpmyadminMySQL 查询在 PHP 中返回 0 行,在 phpmyadmin 中返回实际记录
【发布时间】:2016-01-05 22:09:24
【问题描述】:

我正在尝试从表中获取行 - 要明确的特定行范围。我的查询看起来像这样(只是代码的一部分):

SET @i=0;
SELECT * FROM images WHERE (@i:=@i+1) BETWEEN 1 AND 10;

它的作用是获取行数并返回行数在给定范围内的行。当我在 phpmyadmin 中运行此查询时,我可以看到查询的结果(该范围内的实际行),但是查询的行数为 0。我很确定问题出在这部分

WHERE (@i:=@i+1)

我已经搜索过其他答案,但原因总是在 php 中,而不是查询本身。

【问题讨论】:

  • 如果问题出在 mysql/phpmyadmin 中,为什么还要用 php 标记它呢?
  • 您应该向我们展示如何从您的 php 代码中调用查询。您是否检查了上述查询是否在 php 中返回了任何错误?

标签: mysql phpmyadmin


【解决方案1】:

当您使用 phpMyAdmin 时,每个查询都会打开一个新的数据库连接,并且用户变量不会在连接之间持续存在。在您加入的子查询中设置变量:

SELECT i.*
FROM images AS i
CROSS JOIN (SELECT @i := 0) AS x
WHERE (@i := @i + 1) BETWEEN 1 AND 10;

【讨论】:

  • 就是这样!谢谢一百万!
  • @barmar 好吧,i 变量仍然存在,因为我们在 phpMyAdmin 中得到 10 个结果;只是行计数不起作用。我尝试将 i 初始化为 5,结果中只有 5 行。
  • 您是否在一个命令中发送了两个查询?也许它只是显示第一个查询的行数。 SET 不返回任何内容,因此其行数为 0。
猜你喜欢
  • 1970-01-01
  • 2011-01-15
  • 1970-01-01
  • 2017-10-27
  • 1970-01-01
  • 2019-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多