【问题标题】:PHP with mysql SELECT LIMITPHP 与 mysql 选择限制
【发布时间】:2016-11-27 14:21:30
【问题描述】:

我在 PHP 中有一个请求(mysql),它给了我很多结果,它就像一个魅力。这是一个给我 115 个结果的请求示例:

public static function getInfo($start, $limit) {
 $sql = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(
  SELECT blablabla FROM blabla ORDER BY bla LIMIT $start,$limit
 );
 return $sql;
}

在我的 php 文件中,我有:

$rq = getInfo (0, 0);
$count_rq = (int)count($rq);
for ($i = 0; $i < $count_rq; ++$i) {
 .... do my things ....
}

这是问题所在:在此配置中,它仅显示结果 1 到 42...

当我进行一些修改/测试时,它会显示奇怪的结果:

Modification => for ($i = 42; $i < $count_rq; ++$i) {.......}
I got 0 result.

Modification => for ($i = 43; $i < $count_rq; ++$i) {.......}
I got results 43 from 115 !..

Modification => for ($i = 60; $i < $count_rq; ++$i) {.......}
I got results 60 from 115 !..

我试图修改“限制”,但我不明白。这是我进行修改/测试时的结果:

(i'm using for ($i = 0; $i < $count_rq; ++$i) {.......})
 Modification => $rq = getInfo (0, 20);
     I got results 1 to 20.
 Modification => $rq = getInfo (0, 50);
     I got results 1 to 42.
 Modification => $rq = getInfo (10, 0);
     I got results 1 to 42.
 Modification => $rq = getInfo (10, 30);
     I got results 11 to 40.

我不知道如何显示我的所有结果?我想要一个代码,当请求得到 115 个结果时可以显示 115 个结果,或者当请求得到 10 个结果时可以显示 10 个结果。我怎样才能做到这一点?为什么我只能获得前 42 个结果?

【问题讨论】:

  • 这个方法Db::getInstance(_PS_USE_SQL_SLAVE_)-&gt;ExecuteS到底是做什么的?它是否执行查询获取所有行?
  • 感谢夏洛特的回复。我猜是因为它来自 prestashop:“ExecuteS”执行查询并将所有结果返回到多维数组中..
  • 如果你这样做var_dump($rq);,你会看到什么?
  • 显示整个请求(115 个结果)。
  • 你在做什么阻止?我们可以看到代码吗?

标签: php mysql select prestashop limit


【解决方案1】:
  • 您在请求中使用了限制并检查 MySQL SELECT 是否正在检索良好的结果。
  • 那么,你为什么要在0以外的任何其他东西中启动for循环??
  • 如果您的请求获得 115 行,您应该使用这句话来遍历所有行:

    对于 ($i = 0; $i

祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    相关资源
    最近更新 更多