Php resultset mysql上的foreach只返回一个随机值
我正在尝试在一个脚本中进行一些简单的选择 我知道,如果我尝试读取我的结果集一段时间没有任何问题,但如果我尝试使用foreach,我只是读取了所有错误的1 O2值。。。 为什么? - eccPhp 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);
*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'];
}
已经有人问过这个问题:如果您愿意,也可以从这里查阅:Dmysql_*已被弃用,为此使用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'];
}