【问题标题】:convert php sql query while loop to for loop将php sql查询while循环转换为for循环
【发布时间】:2014-06-18 16:27:56
【问题描述】:

在我的代码中,'product' 表返回表中的每个产品详细信息。

现在我想获取第 0 到第 5 个产品的具体产品详细信息。如何将此 while 循环更改为 for 循环?

代码:

public function getProducts(){
    $query = "SELECT * FROM shop_product";
    $resultSet = Array();
    $result = mysql_query($query) or die (mysql_error());

    while($fetchResult = mysql_fetch_array($result,MYSQL_ASSOC)){
        $resultSet[] = $fetchResult;
    }
    mysql_free_result($result);

    return $resultSet;
}

【问题讨论】:

  • 您现有的查询返回表中每一行的每一列。如果你只想要五行,这是非常浪费的。更改您的查询以添加限制:SELECT * FROM shop_product LIMIT 0,5

标签: php mysql for-loop while-loop


【解决方案1】:

您可以简单地更改查询以返回前 行。

SELECT * FROM shop_product LIMIT 0,5

如果您不喜欢上述解决方案,您可以使用array_slice() 来获取数组的一部分..

while($fetchResult = mysql_fetch_array($result,MYSQL_ASSOC)){
        $resultSet[] = $fetchResult;
    }
    $fiverowsarray = array_slice($resultSet, 0 , 5); //<--- You can add like this..

【讨论】:

    【解决方案2】:

    尝试使用 LIMIT 和 Where 条件

    public function getProducts(){
        $query = "SELECT * FROM shop_product LIMIT 0,5";
        $resultSet = Array();
        $result = mysql_query($query) or die (mysql_error());
    
        while($fetchResult = mysql_fetch_array($result,MYSQL_ASSOC)){
            $resultSet[] = $fetchResult;
        }
        mysql_free_result($result);
    
        return $resultSet;
    }
    

    【讨论】:

    • $product_id 未在任何地方设置,因此这将直接失败。无论如何,当where 子句无论如何都只会返回一种产品时,为什么要限制为五个呢?这对 OP 一点帮助都没有。
    • @Mike W 用户说我想获取第 0 到第 5 个产品的具体产品详细信息
    • 是的。您的查询如果有效,将只返回一种产品,而不是五种。
    • 抱歉product_id这里不需要
    猜你喜欢
    • 2010-11-19
    • 2018-02-22
    • 2017-04-26
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    相关资源
    最近更新 更多