0

我写了一个与 joomla 数据库集成的简单 php 页面。我写了两个函数并调用了它们。

如果函数中的代码被写为非函数(在代码本身上)它可以完美地工作。但!当代码运行并从页面调用时,整个屏幕变白。

代码很简单……第一个函数获取用户的 id 并返回表中数字的总和。第二个函数获取用户的用户名并返回它的 ID 号。为了确保这些功能正常工作,我向他们发送了特定的值(第一个函数为 24,第二个函数为 'admin')。

编码:

<?php
    defined('_JEXEC') or die('Restricted access');
    $items = $params->get('items', 10);
    $db =& JFactory::getDBO();

    function get_sum($uid)
    {
        $sum = 0;
        $query = "SELECT orderpayment_amount 
            FROM #__j2store_orders 
            WHERE user_id = '$uid' 
            ORDER BY id DESC";
        $db->setQuery( $query, 0 , $items );
        $rows = $db->loadObjectList();
        foreach($rows as $row)
        {
            $sum = $sum + $row->orderpayment_amount;
        }
        return "$sum";
    }

    function getTalId($u)
    { 
        $query = "SELECT id 
                  FROM #__users 
                  WHERE username = '$u' 
                  ORDER BY id DESC";
        $db->setQuery( $query, 0 , $items );
        $rows = $db->loadObjectList();
        foreach($rows as $row)
        {
            return $row->id;
        }
    }

    echo get_sum(42);
    echo getTalId('admin');
?>

我被这个问题困了两天。我会很感激任何帮助。谢谢一个头。

4

1 回答 1

1

您正在经历的是白屏死机。

很可能您已关闭错误报告(建议用于生产) t 出现错误,但未显示在屏幕上。您可以:

  • 更改错误报告(系统 > 全局配置 > 服务器 > 错误报告:开发)
  • 检查您的服务器错误日志。

至于为什么会发生这种情况,我想说您无权访问函数内部的 $db 变量(请参阅此答案)。

如果代码在 Jooomla MVC 类模型中,$db = $this->getDbo()会做类似的事情。

我鼓励你使用类而不是函数,你会得到一些额外的东西,比如自动加载

于 2013-04-23T09:49:11.337 回答