PHP 函数 'return' 未返回

标签 php function

这对我来说有点奇怪。 PHP 是我的强项,遇到任何问题我都能正常解决。

我有一个我已经使用多年的自定义框架。我已经承担起重写它的责任,并且我所做的一切与以前基本相同。问题在于以下构造:

function ModPages_GetPage() {
    $page = ModPages_GetPageByName($_GET['page_name']);
    if($page != false) {
        include(TPL_DIR.'pages/pages.view.php');
    } else {
        ErrorMessage('Invalid Page', 'The selected page could not be found.');
    }
}


function ModPages_GetPageByName($page_name = null) {
    $db = new Database;
    $query = '
        SELECT *
        FROM pages
        WHERE page_name = "'.CleanStr($page_name).'"
            AND page_enabled = "yes"
        LIMIT 1
        ';
    $page = $db->GetRow($query);

    return $page;
}

此代码正在使用“home”调用,用于获取 $_GET['page_name'] 的值。对 ModPages_GetPageByName() 的调用工作正常,但 ModPages_GetPage() 中的 $page 的值未设置。事实上,在该调用之后抛出的任何调试语句都无法显示任何内容。

我将 display_errors 设置为 on,并将 error_reporting 设置为 E_ALL。我从我的数据库类中收到了一些通知,仅此而已。

在 shell 中运行脚本不会产生任何错误。使用 strace 时,我确实看到进程吐出一个“exit_group(255)”。

这个让我很困惑。我肯定可以在这方面使用一些指导。

最佳答案

我认为这是您的查询,您不应该只返回页面名称而不是星号吗?因为星号 (*) 会返回一个可能作为值传回的数组?只是我的猜测。

$query = '
        SELECT *
        FROM pages
        WHERE page_name = "'.CleanStr($page_name).'"
            AND page_enabled = "yes"
        LIMIT 1
        ';

如果你在 $page 返回上做一个 print_r 我认为它应该是一个数组

$page = $db->GetRow($query);
echo "Page:<pre>".print_r($page,true)."</pre><br />\n";

然后也许返回这样的东西

return $page['page_name_field'];

关于PHP 函数 'return' 未返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3860477/

相关文章:

c++ - 函数的复杂参数

r - 如何将简单的文本表达式转换为 R 中的数学表达式

JavaScript 带参数函数的问题

vba - Excel VBA : Need Workaround for 255 Transpose Character Limit When Returning Variant Array to Selected Range

php - 在 PHP 中解析 WordPress stdClass 数据

php - 连接正忙于处理另一个 hstmt 错误的结果

php - MySQL 字符集和 PHP

function - 如何在Dart中对函数进行字符串化和反字符串化?

php - JavaScript 和 PHP 之间的通信

php - PHP正则表达式替换中的可选字符