Php 如何从函数中返回要在包含的文件中使用的数据库?

Php 如何从函数中返回要在包含的文件中使用的数据库?,php,arrays,function,html-table,return,Php,Arrays,Function,Html Table,Return,我已经没有选择了,我不知道我做错了什么。我想自动从表中提取数据,并在此过程中分页。代码本身可以完美地工作,但一旦我将其作为功能的一部分(使流程自动化),它就会崩溃。我似乎无法从函数中“提取”数据。我所期望的是,一旦我运行了这个函数,我就可以使用$result变量访问结果,但这不起作用。我做错了什么?我试图呈现输出的页面包含在我运行函数的页面中 function generateDataTable(string $table) { global $PDO; if(isset($_

我已经没有选择了,我不知道我做错了什么。我想自动从表中提取数据,并在此过程中分页。代码本身可以完美地工作,但一旦我将其作为功能的一部分(使流程自动化),它就会崩溃。我似乎无法从函数中“提取”数据。我所期望的是,一旦我运行了这个函数,我就可以使用
$result
变量访问结果,但这不起作用。我做错了什么?我试图呈现输出的页面包含在我运行函数的页面中

function generateDataTable(string $table) {
    global $PDO;

    if(isset($_GET['page']) && !empty($_GET['page']) && ctype_digit($_GET['page'])) { $pageNumber = $_GET['page']; } else { $pageNumber = dataPageNumber; }
    if(isset($_GET['list']) && !empty($_GET['list']) && ctype_digit($_GET['list'])) { $listnumber = $_GET['list']; } else { $listNumber = dataListNumber; }

    if(!empty($_GET['sortby']) && ctype_alnum($_GET['sortby'])) { $sortBy = $_GET['sortby']; } else { $sortBy = 'id'; }
    if(!empty($_GET['sortorder']) && ctype_alnum($_GET['sortorder'])) { $sortOrder = $_GET['sortorder']; } else { $sortOrder = 'ASC'; }

    $rowsCount = getRowsCount($table);
    $lastPage = ceil($rowsCount/$listNumber);

    if ($pageNumber > $lastPage) { $pageNumber = $lastPage; }
    if ($pageNumber < 1) { $pageNumber = 1; }

    $rowsLimitLow = ($pageNumber - 1) * $listNumber;
    $rowsLimitHigh = $listNumber;

    $query = $PDO->prepare("SELECT * FROM $table ORDER BY $sortBy $sortOrder LIMIT $rowsLimitLow, $rowsLimitHigh");
    $query->execute();
    $result = $query->fetchAll();

    return $result;
}
以下是我尝试访问结果的方式:

<?php
                foreach($result as $item) {
                    echo '<tr>
                        <td><input type="checkbox" value="'.$carrier['id'].'"></td>
                        <td class="expand"><a href="index.php?module=data&action=view&carrier='.$item['id'].'">'.$item['name'].'</a></td>
                        <td>'.$item['iata_code'].'</td>
                        <td>'.$item['icao_code'].'</td>
                        <td>'.$item['country'].'</td>
                    </tr>';
                }
            ?>

但这也失败了。有什么想法吗?

您需要将函数的返回值指定给变量:

$result = generateDataTable('carrier');

您需要将函数的返回值指定给变量:

$result = generateDataTable('carrier');

我不敢相信是这样的。。。工作完美。如果你不介意我问的话,这背后的逻辑是什么?顺便说一下,非常感谢!我认为你需要复习函数调用的教程。当函数不
返回$result时,获取返回值的方法是将其分配给某个对象。这也是一个变量范围问题。函数内部的
$result
变量在函数外部不可见,除非您声明
全局$result。我不敢相信这是真的。。。工作完美。如果你不介意我问的话,这背后的逻辑是什么?顺便说一下,非常感谢!我认为你需要复习函数调用的教程。当函数不
返回$result时,获取返回值的方法是将其分配给某个对象。这也是一个变量范围问题。函数内部的
$result
变量在函数外部不可见,除非您声明
全局$result
$result = generateDataTable('carrier');