Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php resultset mysql上的foreach只返回一个随机值_Php_Mysql_Sql_Foreach_Resultset - Fatal编程技术网

Php resultset mysql上的foreach只返回一个随机值

Php resultset mysql上的foreach只返回一个随机值,php,mysql,sql,foreach,resultset,Php,Mysql,Sql,Foreach,Resultset,我正在尝试在一个脚本中进行一些简单的选择 我知道,如果我尝试读取我的结果集一段时间没有任何问题,但如果我尝试使用foreach,我只是读取了所有错误的1 O2值。。。 为什么? - ecc *OUTPUT FOREACH* ID: 1 Name: ID: 1 Name: ID: t Name: i ID: t Name: i 像这样试试 $sql = " select * from tutorials_tbl"; $result = mysql_query($sql);

我正在尝试在一个脚本中进行一些简单的选择

我知道,如果我尝试读取我的结果集一段时间没有任何问题,但如果我尝试使用foreach,我只是读取了所有错误的1 O2值。。。 为什么?

-

ecc

*OUTPUT FOREACH*

 ID: 1 Name: 
 ID: 1 Name: 
 ID: t Name: i
 ID: t Name: i 
像这样试试

 $sql = " select * from tutorials_tbl";
 $result = mysql_query($sql);
 $rows= mysql_fetch_array($result, MYSQL_BOTH);

 foreach($rows as $row){
  echo 'ID '. $row->id.' Name '.$row->name;

 }

使用foreach只获得一行的原因是函数mysql\u fetch\u array()只返回一条记录

在while循环中,调用函数的条件将在每个循环中重新计算。这太完美了

您拥有的foreach非常奇怪,我想发生的是mysql_fetch_array()将一条记录作为数组读取到变量$rows中,然后它将迭代记录中的每一列。。。。换句话说,$rows只是一行,$row是行中的一个值。 您在输出中只看到一个或两个字母的原因是字符串上的$row[0]只给出了字符串中的第0个字母

foreach的唯一工作方式是使用“fetch all”函数,该函数提供一个数组数组。但你必须自己创造。。。它可能主要包含while循环:)

如果您按照建议使用PDO,它将附带fetchAll功能

$sql = " select * from tutorials_tbl";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
printf("ID: %s  Name: %s", $row['Attribute-1'], $row['Attribute-2']);  
}

foreach($rows= mysql_fetch_array($result, MYSQL_BOTH) as $row)
{
  echo $row['Attribute-1'];
  echo $row['Attribute-2'];
}
已经有人问过这个问题:

如果您愿意,也可以从这里查阅:D

mysql_*已被弃用,为此使用mysqli_*或PDO。同时也在这两个行中写入print_r($row);这就是问题所在。。。。。我试着用一些框架php做我所做的事情,我想他们会为您构建fetchAll…谢谢!
 $sql = " select * from tutorials_tbl";
 $result = mysql_query($sql);
 $rows= mysql_fetch_array($result, MYSQL_BOTH);

 foreach($rows as $row){
  echo 'ID '. $row->id.' Name '.$row->name;

 }
$sql = " select * from tutorials_tbl";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
printf("ID: %s  Name: %s", $row['Attribute-1'], $row['Attribute-2']);  
}

foreach($rows= mysql_fetch_array($result, MYSQL_BOTH) as $row)
{
  echo $row['Attribute-1'];
  echo $row['Attribute-2'];
}