如何计算 while 循环输出 PHP SQL
How to count while loop output PHP SQL
乐解
我是在 Brian 和 W3Schools 的帮助下来到这里的
这是垃圾,它不起作用...我无法将循环输出到特定位置啊啊啊
$rows2 = array();
while($stmt->fetch()){
echo $date.'<br>'.$stratoparse.'<br>'.'<br>';
$rows2[] = $stratoparse;
$rows3[] = $date;
}
for($i=0;$i<=$num_rows;$i++){
echo $rows3[$i].' '.$rows2[$i].'<br>'.'<br>';
}
输出
2015 年 1 月 5 日
样本 3
2015 年 1 月 5 日
样本 2
2015 年 1 月 5 日
样品
01-05-2015 示例 3
01-05-2015 示例 2
01-05-2015 样本
初始post
所以我正在尝试存储 while 循环查询的输出。在独立的 .php 文件中,while 循环可以很好地输出数据。但是当我试图存储它时,例如。通过 POST 例如开始循环。搜索提交时,while 循环不像在独立脚本中那样 "execute properly"。我将提供代码的两部分。
我想做的是计算满足 SELECT 语句的列数,知道我会使用 range(1,this number) 来存储 while 输出...如果有是一种更简单更直接的方法,那也很好。
这是独立代码,不完整 select。它确实有效,行按降序回显。
看起来是拼写错误的不是拼写错误,服务器访问信息中的用户名是单臂的,所以我用两个r来区分。
<?php
$stmt=$link->prepare('SELECT stratoparse,date FROM stock WHERE user=? AND keyphrase=? ORDER BY ID DESC');
$stmt->bind_param('ss',$userrname,$keyphrase);
$stmt->execute();
$stratoparse=null;
$date=null;
$stmt->bind_result($stratoparse,$date);
while($stmt->fetch()){
echo $date.'<br>'.$stratoparse.'<br>'.'<br>';
}
?>
这是我正在尝试使用的代码,实际上我并不真的需要 post 第二部分。上面的代码将由 POST 事件触发,然后将输出存储并回显到 HTML
我也在尝试应用在 Whosebug 上找到的这个解决方案
$store_array = range( 1, 5);
$i = 1;
$store_array = array();
while( $i <= 5)
{
$store_array[] = $i;
$i++;
}
更新
这是我运行测试 .php 文件时的输出
2015 年 1 月 5 日
样本 3
2015 年 1 月 5 日
样本 2
2015 年 1 月 5 日
样品
010
你可以看到回显的两个 num_rows 是 0,中间的 1 是一个 bool(true) 我想当我回显 $stmt->execute();
这是减去登录信息的代码
$link = new mysqli("$servername", "$username", "$password", "$dbname");
$link2 = new mysqli("$servername", "$username", "$password", "$dbname");
$stmt=$link->prepare('SELECT stratoparse,date FROM stock WHERE user=? AND keyphrase=? ORDER BY ID DESC');
$stmt->bind_param('ss',$userrname,$keyphrase);
$stmt->execute();
$num_rows = $stmt->num_rows;
$stratoparse=null;
$date=null;
$stmt->bind_result($stratoparse,$date);
while($stmt->fetch()){
echo $date.'<br>'.$stratoparse.'<br>'.'<br>';
}
echo $num_rows;
$stmt2=$link2->prepare('SELECT COUNT(keyphrase) FROM stock WHERE user=? AND keyphrase=?');
$stmt2->bind_param('ss',$userrname,$keyphrase);
echo $stmt->execute();
$stmt2->bind_result($keyphrase);
$num_rows2 = $stmt2->num_rows;
echo $num_rows2;
假设您指的是行数而不是列数,则不需要 while 循环 - 您可以直接从 SQL 语句返回 number of rows:
$stmt->store_result();
$num_rows = $stmt->num_rows;
$stmt->close();
您已经从 SELECT 查询中知道的列数。
编辑:根据您在下方的评论,您希望存储查询结果以供日后使用。不幸的是,使用准备好的语句,它比标准的 msyql 结果更混乱。您可以在 bind_result 的文档中看到一些示例,但基本思想是这样的:
$rows = array();
while ($stmt->fetch()) {
$rows[] = array('key1'=>$field1, 'key2'=>$field2, ...);
}
当然不是完整的代码,但是一旦你充实它,你最终会得到一个行数组,其中每个元素都是作为关联数组的行,就像你得到一个 mysql 结果的 fetch_assoc() 函数。
乐解
我是在 Brian 和 W3Schools 的帮助下来到这里的
这是垃圾,它不起作用...我无法将循环输出到特定位置啊啊啊
$rows2 = array();
while($stmt->fetch()){
echo $date.'<br>'.$stratoparse.'<br>'.'<br>';
$rows2[] = $stratoparse;
$rows3[] = $date;
}
for($i=0;$i<=$num_rows;$i++){
echo $rows3[$i].' '.$rows2[$i].'<br>'.'<br>';
}
输出
2015 年 1 月 5 日 样本 3
2015 年 1 月 5 日 样本 2
2015 年 1 月 5 日 样品
01-05-2015 示例 3
01-05-2015 示例 2
01-05-2015 样本
初始post
所以我正在尝试存储 while 循环查询的输出。在独立的 .php 文件中,while 循环可以很好地输出数据。但是当我试图存储它时,例如。通过 POST 例如开始循环。搜索提交时,while 循环不像在独立脚本中那样 "execute properly"。我将提供代码的两部分。
我想做的是计算满足 SELECT 语句的列数,知道我会使用 range(1,this number) 来存储 while 输出...如果有是一种更简单更直接的方法,那也很好。
这是独立代码,不完整 select。它确实有效,行按降序回显。
看起来是拼写错误的不是拼写错误,服务器访问信息中的用户名是单臂的,所以我用两个r来区分。
<?php
$stmt=$link->prepare('SELECT stratoparse,date FROM stock WHERE user=? AND keyphrase=? ORDER BY ID DESC');
$stmt->bind_param('ss',$userrname,$keyphrase);
$stmt->execute();
$stratoparse=null;
$date=null;
$stmt->bind_result($stratoparse,$date);
while($stmt->fetch()){
echo $date.'<br>'.$stratoparse.'<br>'.'<br>';
}
?>
这是我正在尝试使用的代码,实际上我并不真的需要 post 第二部分。上面的代码将由 POST 事件触发,然后将输出存储并回显到 HTML
我也在尝试应用在 Whosebug 上找到的这个解决方案
$store_array = range( 1, 5);
$i = 1;
$store_array = array();
while( $i <= 5)
{
$store_array[] = $i;
$i++;
}
更新
这是我运行测试 .php 文件时的输出
2015 年 1 月 5 日 样本 3
2015 年 1 月 5 日 样本 2
2015 年 1 月 5 日 样品
010
你可以看到回显的两个 num_rows 是 0,中间的 1 是一个 bool(true) 我想当我回显 $stmt->execute();
这是减去登录信息的代码
$link = new mysqli("$servername", "$username", "$password", "$dbname");
$link2 = new mysqli("$servername", "$username", "$password", "$dbname");
$stmt=$link->prepare('SELECT stratoparse,date FROM stock WHERE user=? AND keyphrase=? ORDER BY ID DESC');
$stmt->bind_param('ss',$userrname,$keyphrase);
$stmt->execute();
$num_rows = $stmt->num_rows;
$stratoparse=null;
$date=null;
$stmt->bind_result($stratoparse,$date);
while($stmt->fetch()){
echo $date.'<br>'.$stratoparse.'<br>'.'<br>';
}
echo $num_rows;
$stmt2=$link2->prepare('SELECT COUNT(keyphrase) FROM stock WHERE user=? AND keyphrase=?');
$stmt2->bind_param('ss',$userrname,$keyphrase);
echo $stmt->execute();
$stmt2->bind_result($keyphrase);
$num_rows2 = $stmt2->num_rows;
echo $num_rows2;
假设您指的是行数而不是列数,则不需要 while 循环 - 您可以直接从 SQL 语句返回 number of rows:
$stmt->store_result();
$num_rows = $stmt->num_rows;
$stmt->close();
您已经从 SELECT 查询中知道的列数。
编辑:根据您在下方的评论,您希望存储查询结果以供日后使用。不幸的是,使用准备好的语句,它比标准的 msyql 结果更混乱。您可以在 bind_result 的文档中看到一些示例,但基本思想是这样的:
$rows = array();
while ($stmt->fetch()) {
$rows[] = array('key1'=>$field1, 'key2'=>$field2, ...);
}
当然不是完整的代码,但是一旦你充实它,你最终会得到一个行数组,其中每个元素都是作为关联数组的行,就像你得到一个 mysql 结果的 fetch_assoc() 函数。