PHP mysqli_fetch_all给我一个空白屏幕


PHP mysqli_fetch_all gives me a blank screen

我刚把一些东西从我的本地机器推送到现场,结果到处都是空白页。当我使用一切都中断时,我将问题追踪到mysqli_fetch_all。它为什么这样做?我该怎么解决?如果我使用mysqli_fetch_array或mysqli_fetch_row或mysqli_fetch_assoc,它可以工作,但我的数据不能正确显示。

这是一个正在中断的函数:

function getUserFields($connection){
        $query = mysqli_query($connection, "DESCRIBE `adminUsers`");
        $results = mysqli_fetch_all($query, MYSQLI_ASSOC);
        return $results;
}

$connection是连接到我的数据库,我已经确认工作和$query sting正在填充,它只是mysqli_fetch_all不工作,我怎么能在函数中修复这个问题而不调整当前数据的显示方式

函数mysqli_fetch_all()及其面向对象的对应函数(mysqli_result::fetch_all))仅在PHP 5.3及以后版本中可用。

似乎您的服务器正在运行较低版本的PHP,或者您缺少MySQL本地驱动程序(此函数依赖),这解释了为什么其他fetch函数工作,而这个不。

来自手册:

mysqli_fetch_all
mysqli_result: fetch_all

对于将来的调试,请打开错误开关或参考错误日志,因为这通常有助于识别问题。

error_reporting(E_ALL);
ini_set('display_errors', '1');

如果您没有权限升级PHP版本,或者安装MySQLND,您可以简单地使用mysqli_fetch_assoc()将代码转换为手动迭代:

function getUserFields($connection){
    $query = mysqli_query($connection, "DESCRIBE `adminUsers`");    
    $results = array();
    if($query){
        while($row = mysqli_fetch_assoc($query)){
            $results[] = $row;
        }
    }
    return $results;
}

根据php文档,这个函数是mysqlnd仅 (MySQL本地驱动程序)。如果您没有在服务器上安装它,它将不会执行(并抛出错误)。

仅适用于mysqlnd.

作为mysqli_fetch_all()返回所有的行作为一个数组在一个单一第一步,它可能比一些类似的函数消耗更多的内存,比如Mysqli_fetch_array(),它每次只从结果集。此外,如果需要遍历结果集,则需要将需要循环构造,这将进一步影响性能。由于这些原因,mysqli_fetch_all()应该只在这些情况下使用获取的结果集将被发送到另一层的情况进行处理。

访问http://www.php.net/manual/en/mysqli-result.fetch-all.php#refsect1-mysqli-result.fetch-all-mysqlnd获取更多信息

考虑使用mysqli_fetch_array - http://www.php.net/manual/en/mysqli-result.fetch-all.php。它使用几乎相同的参数,所以应该不会有问题。

有可能问题在其他地方,但这是我的第一个猜测(没有启用错误报告:/)

编辑:您将需要对结果进行迭代,因为mysqli_fetch_array(以及这个系列中的其他函数)每次只返回一行。这可能就是为什么你在使用它们的时候会得到错误的结果。

其他解决方案是启用php_mysqld .dll/php_mysqld。因此,在服务器上的php。ini中扩展并重新启动服务(你可能在本地机器上有,这就是它工作的原因)