PHP在MySQL结果中迭代一定次数

PHP在MySQL结果中迭代一定次数,php,arrays,json,mysqli,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

目前,我有以下代码在查询的整个结果中循环:

$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\u result()
和for循环来计数
$amount
,但我不确定我现有的代码将如何使用该设置!请给我一些建议

编辑:

@Styphon指出,为了解决这个问题,我实际上不需要更改迭代代码。只需要在我的SQL查询中添加一个
限制

SELECT * FROM tbl
LIMIT 0, $amount
这会将您的结果限制为$amount

$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);
这会将您的结果限制为$amount

$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);
这会将您的结果限制为$amount

$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);

这会将结果限制在$amount。

无论您使用mysql还是mysqli,解决方案都是相同的(但您应该使用mysqli甚至pdo)。它大致是这样的:

$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);
$num = 0;
$amount = 10;

while ($f = mysql_fetch_array($q)) {
  // your code;
  $num++;
  if ($num==$amount) break;
}
正如您提到的for循环,使用for循环,您可能会执行类似的操作

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

for($i=0;$i无论您使用mysql_uu还是mysqli_uu,解决方案都是一样的(但您应该使用mysqli甚至pdo)

$num = 0;
$amount = 10;

while ($f = mysql_fetch_array($q)) {
  // your code;
  $num++;
  if ($num==$amount) break;
}
正如您提到的for循环,使用for循环,您可能会执行类似的操作

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

for($i=0;$i无论您使用mysql_uu还是mysqli_uu,解决方案都是一样的(但您应该使用mysqli甚至pdo)

$num = 0;
$amount = 10;

while ($f = mysql_fetch_array($q)) {
  // your code;
  $num++;
  if ($num==$amount) break;
}
正如您提到的for循环,使用for循环,您可能会执行类似的操作

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

for($i=0;$i无论您使用mysql_uu还是mysqli_uu,解决方案都是一样的(但您应该使用mysqli甚至pdo)

$num = 0;
$amount = 10;

while ($f = mysql_fetch_array($q)) {
  // your code;
  $num++;
  if ($num==$amount) break;
}
正如您提到的for循环,使用for循环,您可能会执行类似的操作

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



用于($i=0;$i为什么不只是给查询添加一个限制?为什么要将行放入一个var,然后将var放入数组,然后再推入数据?我对MySQL没有太多经验,如何做到这一点?听起来好像可以做到!寻找LIMIT@benharris看到我的答案了吗?为什么不在查询中添加一个限制?为什么要将行放入var,然后再放入var进入阵列,然后推入数据?我对MySQL没有太多经验,这将如何实现?但听起来它可以工作!寻找LIMIT@benharris看到我的答案了吗?为什么不给你的查询增加一个限制?为什么你把行放进一个var,然后把var放进数组,然后再把var放进数据?我对MySQL没有太多经验,这会是怎样的完成了吗?听起来还可以!看看LIMIT@benharris看到我的答案了吗?为什么不给你的查询增加一个限制?为什么你把行放进一个var,然后把var放进数组,然后再把var放进数据?我对MySQL没有太多的经验,这是怎么做到的?听起来好像可以做到的!看看LIMIT@benharris请参见我的回答so
LIMIT0,$amount
只是在我的查询结束时出现?好吧,这比我想象的要容易得多!谢谢!所以
LIMIT 0,$amount
只是在我的查询结束时出现?好吧,这比我想象的要容易得多!谢谢!所以
LIMIT 0,$amount
只是在我的查询结束时出现了?好吧,这太简单了比我想象的要简单!谢谢!所以
LIMIT 0,$amount
在我的查询结束时就开始了?好吧,这比我想象的要简单得多!谢谢!但是很明显,你应该使用LIMIT,我以为你以前就知道了。把投票升级为“问题的答案”:我听说我需要使用for循环并计数到$amount-这显示了(尽管使用
while
)这将如何完成。但对未来的访问者有用的信息-尽管(正如您所指出的)这不是最好的解决方案。既然你提到了,mysql_fetch_*确实会向前移动一个内部指针,所以简单的for循环可能会更简单。我将相应地编辑我的答案。当结果数小于
$amount
..时,你的新公式是如何工作的?你可以为($i=0;$iYes,我想到了这一点,但我还是写了它。他应该自己弄清楚一些事情:)他也可以在没有任何获取的情况下打破循环,有选项,这取决于提问者。但显然,你应该使用限制,我以为你以前就知道了。将投票升级为“问题的答案”:我听说我需要使用for循环并计数到$amount-这显示了(尽管使用
while
)这将如何完成。但对未来的访问者有用的信息-尽管(正如您所指出的)这不是最好的解决方案。既然你提到了,mysql_fetch_*确实会向前移动一个内部指针,所以简单的for循环可能会更简单。我将相应地编辑我的答案。当结果数小于
$amount
..时,你的新公式是如何工作的?你可以为($i=0;$iYes,我想到了这一点,但我还是写了它。他应该自己弄清楚一些事情:)他也可以在没有任何获取的情况下打破循环,有选项,这取决于提问者。但显然,你应该使用限制,我以为你以前就知道了。将投票升级为“问题的答案”:我听说我需要使用for循环并计数到$amount-这显示了(尽管使用
while
)这将如何完成。但对未来的访问者有用的信息-尽管(正如您所指出的)这不是最好的解决方案。既然你提到了,mysql_fetch_*确实会向前移动一个内部指针,所以简单的for循环可能会更简单。我将相应地编辑我的答案。当结果数小于
$amount
..时,你的新公式是如何工作的?你可以为($i=0;$iYes,我想到了这一点,但我还是写了它。他应该自己想出一些东西:)他也可以在没有任何获取的情况下打破循环,有选项,这取决于谁问。但显然,你应该使用限制,我以为你以前就知道了。将投票升级为“a”