使用循环和无循环

时间:2017-12-09 12:40:18

标签: php

当我使用while循环使用mysqli_fetch_array()打印特定列的值时,我从数据库中获得了正确的输出。

while($row=mysqli_fetch_array($data))
{
  echo $row['name'];
}

但是当我使用下面提到的没有循环的代码时,输​​出是不同的。

   $row=mysqli_fetch_array($data);
    echo $row['name'];
    echo $row['name'];
    echo $row['name'];
    echo $row['name'];
    echo $row['name'];
    echo $row['name']; 

当我使用下面提到的代码时,我可以看到我使用mysqli_fetch_array()以关联数组的形式获取所有行。

$con=mysqli_connect("localhost", "root", "", "student_details");
$data=mysqli_query($con,"select * from `registration`");
while ($row = mysqli_fetch_array($data))
 {  
    $rec[]=$row;
 }
echo "<pre>"; 
print_r($rec);
echo "</pre>";
?> 

我的问题是如何获取特定列的所有值(使用while循环),而不使用任何循环。

4 个答案:

答案 0 :(得分:1)

您可以使用mysqli_fetch_all获取所有数据。

签入php docs

- &GT; mysqli_result :: fetch_all - mysqli_fetch_all - - &GT;获取所有结果行作为关联数组,数字数组或两者

答案 1 :(得分:0)

使用PDO

$stmt = $pdo->prepare("SELECT * FROM registration"); 
$stmt->execute(); 
$array = $stmt->fetchAll(PDO::FETCH_COLUMN);
print_r($array);

答案 2 :(得分:0)

您可以使用mysqli_fetch_all获取阵列中的所有数据,但可能需要使用foreach进行进一步操作。

$con=mysqli_connect("localhost", "root", "", "student_details");
$data=mysqli_query($con,"select * from `registration`");
$row = mysqli_fetch_all($data, MYSQLI_ASSOC);

echo "<pre>"; print_r($row); die;
// Will show all data coming in $row as Array

如需进一步处理,您可能需要使用如下的foreach:

foreach ($row as $item) {
    print_r($item);  // see what your item contains
}

答案 3 :(得分:0)

首先,这段代码:

while($row=mysqli_fetch_array($data))
{
    echo $row['name'];
}

不等同于:

$row=mysqli_fetch_array($data);
echo $row['name'];
echo $row['name'];
echo $row['name'];
echo $row['name'];
echo $row['name'];
echo $row['name'];

而是像(伪代码):

$row = mysqli_fetch_array($data);
if (!$row) return; //break the loop
echo $row['name'];

$row = mysqli_fetch_array($data);
if (!$row) return; //break the loop
echo $row['name'];
...

您可以使用多个mysqli_fetch_array()调用来实现您的需求,但还有其他方法可以实现它。其中之一是mysqli_fetch_all()的用法。两者都以类似的方式工作,但mysqli_fetch_all()返回从查询中收到的所有结果的数组,而不是一次一个结果。 现在,它返回一个数组数组,以便访问它,而不是:

$row['name'];

您需要使用:

$row[ROW_NUMBER]['name']
//example
$row[0]['name']

示例:

1)mysqli_fetch_array()

$row = mysqli_fetch_array($data);
echo $row['name']; //output name from the first row
$row = mysqli_fetch_array($data);
echo $row['name']; //output name from the second row

2)mysqli_fetch_all()

$row = mysqli_fetch_all($data);
echo $row[0]['name']; //output name from the first row
echo $row[1]['name']; //output name from the second row