如何循环PHP代码和MySQL?

时间:2015-05-22 18:38:55

标签: php mysql arrays

如何在查询中使用PHP循环,而不是将所有结果放入数组然后循环遍历数组

我使用数组和循环的方式是这样的:

<?php $userInfos = $qry->querySelect( SQL CODE HERE );

  foreach($userInfos as $uInfo)
        {
        $fName = $uInfo['fName'];
        $lName = $uInfo['lName'];
        $gender = $uInfo['gender'];
?>

First name is: <? echo $fName; ?> and Last name is <? echo $lName; ?>.

<?php } ?>

我想更好地了解PHP循环查询的方式比数组更好。请将我重定向到一些示例,或者可能包含MySQL代码。

如果我提取数百万条记录,如何将上述php代码转换为更高效?

非常感谢!

3 个答案:

答案 0 :(得分:2)

你可以用mysqli_fetch_row()

做一个简单的循环

http://php.net/manual/en/mysqli-result.fetch-row.php

答案 1 :(得分:1)

您似乎需要使用 querySelect 功能以外的其他功能(似乎返回数组)。

也许$qry对象有一些其他函数会返回一个你可以获取的语句句柄,就像普通的mysqli_PDO接口提供的一样。

在我看来,$qry来自本土的MySQL库“包装器”类,它暴露了有限的功能子集。如果该对象没有提供获取语句句柄的方法,则可能需要将相应的函数添加到对象定义中,或者放弃该对象,并使用mysqliPDO

有很多如何做到这一点的例子。使用PDO,我们的第一个剪切(在我们添加错误检查和异常处理之前)可能看起来像这样:

$sql="SELECT t.name FROM really_big_table t";
$sth=$dbh->prepare($sql);
$sth->execute();

while ($row = $sth->fetch(PDO::FETCH_ASSOC) ) {
   echo "<br>Name is: ". htmlentities($row['name']);
}

$sth->close();

参考:http://php.net/manual/en/pdostatement.fetch.php

答案 2 :(得分:1)

我执行以下操作:

//DB Query getData
$q_getData = "SELECT `stuff`, `moreStuff`, `otherStuff` FROM `table`";
$rsgetData = mysqli_query($DBi, $q_getData) or die(mysqli_error($DBi));
$row_rsgetData = mysqli_fetch_assoc($rsgetData);
$rows_rsgetData = mysqli_num_rows($rsgetData);

if($rows_rsgetData>0) {
    do {
        echo $row_rsgetData['stuff'] . '&nbsp;' . $row_rsgetData['moreStuff'] . '<br>';
        echo $row_rsgetData['otherStuff'];
    } while ($row_rsgetData = mysqli_fetch_assoc($rsgetData));
        $rows = mysqli_num_rows($rsgetData);
        if($rows > 0) {
            mysqli_data_seek($rsgetData, 0);
            $row_rsgetData = mysqli_fetch_assoc($rsgetData);
        }
    mysqli_free_result($rsgetData);
};

运行查询并循环遍历每一行,直到没有行为止 - 只有在第一个地方返回了行时。一旦完成,它就可以释放连接。