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请参见我的回答soLIMIT0,$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”