使用MySQLi将所有行作为不带循环的对象数组



这就是我如何使用MySQLi:获得一条记录

$result = $db->query("...");
$image = $result->fetch_object();

现在我需要获得评论并将其传递给视图。我现在正在使用以下片段,但它似乎不对:

$result = $db->query("...");
while ($row = $result->fetch_object())
    $comments[] = $row;

我想知道是否有办法去除循环?有没有类似的东西:

$image = $result->fetch_object(((s)))

所以我的代码看起来像:

$result = $db->query("...");
$comments = $result->fetch_objects();

mysqli_result类提供了一个fetch_all方法来收集完整的结果集。但是,该方法将只返回关联数组或数值数组(或混合数组),而不返回对象。

使用mysqli_fetch_all()无法获得对象数组。可用的选项有:索引数组、关联数组或两者兼有。

考虑使用PHP数据对象(PDO)接口,它有更多的获取模式,因此在这方面优于MySQLi。

如果没有看到您的SQL,很难说。您可以使用更好的查询。发布您的SQL,我再看一眼。

就SQL查询而言,如果查询返回多行,那么您已经通过一个数据库调用获取了这些行。

我看不出有什么方法可以将所有的注释收集到一个数组中,但您可以使用自定义函数清理代码。

function get_all_rows_as_array(&$result)
{
    foreach($result as mysql_fetch_assoc($result))
    {
        $array[] = $row;
    }
    return $array;
}
$result = $db->query("...");
$comments = get_all_rows_as_array($result);

相关内容

  • 没有找到相关文章

最新更新