PHP通过MySQL结果迭代一定次数

时间:2014-03-04 12:40:06

标签: php arrays json mysqli

目前,我将此代码循环遍历查询的整个结果:

$result = mysqli_query($con, $sql);
$data = array();

while($row = mysqli_fetch_array($result)) { 

    $name      = $row ['name'];
    $desc      = $row ['description'];
    $cat       = $row ['category'];
    $price     = $row ['price'];
    $quantity  = $row ['quantity'];
    $id        = $row ['productID'];
    $image     = $row ['image'];

    $arr = array();

    $arr ["id"] = $id;
    $arr ["name"] = $name;
    $arr ["desc"] = $desc;
    $arr ["cat"] = $cat;
    $arr ["price"] = $price;
    $arr ["quantity"] = $quantity;
    $arr ["image"] = $image;

    array_push($data, $arr);

}
echo json_encode($data);

我想将此更改为仅循环一定量的结果。我有一个名为$amount的代码的变量,这是我想要的结果量。

我听说我应该使用mysql_result()和for循环来计算$amount,但我不确定我的现有代码如何与该设置一起使用!建议请。

编辑:

@Styphon指出我实际上并不需要改变我的迭代代码来解决这个问题。只需要在我的SQL查询中添加LIMIT

3 个答案:

答案 0 :(得分:2)

$sql = "rest of query...
LIMIT $amount"; //This will limit it to whatever is $amount. Just make sure to have it on the end of your query.
$result = mysqli_query($con, $sql);
$data = array();

while($row = mysqli_fetch_array($result)) { 

    $arr = array();
    $arr["id"] = $row['productID'];
    $arr["name"] = $row['name'];
    $arr["desc"] = $row['description'];
    $arr["cat"] = $row['category'];
    $arr["price"] = $row['price'];
    $arr["quantity"] = $row['quantity'];
    $arr["image"] = $row['image'];

    array_push($data, $arr);

}
echo json_encode($data);

答案 1 :(得分:1)

无论你使用mysql_还是mysqli_(但你应该使用mysqli甚至是pdo),解决方案都是一样的。它就是这样的:

$num = 0;
$amount = 10;

while ($f = mysql_fetch_array($q)) {
  // your code;
  $num++;
  if ($num==$amount) break;
}

正如你提到的循环,使用for循环你可能会做这样的事情

for ($i=0;$i<$amount;$i++) {
  $f = mysql_fetch_array($q);
  //your code
}

显然你应该根据自己的需要进行调整。

答案 2 :(得分:0)

SELECT * FROM tbl
LIMIT 0, $amount

这会将结果限制为$ amount。