【问题标题】:Codeigniter function returning an empty queryCodeigniter 函数返回一个空查询
【发布时间】:2013-06-04 17:28:18
【问题描述】:

我的模型上有这个函数,它接收一个参数,所以我可以在视图页面上预加载一些信息,但不知何故返回为空:

function addTicket($idt)
    {
        //Db Connection
        $DB2 = $this-> load-> database('DB2', TRUE);
        if (!empty($idt)){

            $query = $DB2->query ("
                    Select TROUBLE_ID, ASSIGNED_DATE, CREATOR, PROBLEM_DESCRIPTION, RESOLUTION, RESOLVED_DATE 
                    FROM TABLE1
                    WHERE TROUBLE_ID = ".$idt." 
                    "); 

        if($query){

            return $query->result_array();
        }
        else 
            {

        echo 'No Queries to display';
            }
        }
        else {echo 'No results to display';}
    }

我有一个包含大量条目的 Oracle 数据库,但查询始终为空,以防万一我做了一个echo 'id:'.$idt.; 来检查 ID 是否被传递。是的。 我也收到此消息: 致命错误:在非对象上调用成员函数 result_array()

在我的视图页面上我有这个代码:

foreach($results as $row){ }

我现在收到这条消息: 遇到 PHP 错误 严重性:警告 消息:为 foreach() 提供的参数无效 知道为什么这不起作用吗?

【问题讨论】:

    标签: php sql oracle codeigniter


    【解决方案1】:

    这是 CodeIgniter 吗?如果是这样,检查结果的更好方法是if($query->num_rows() > 0) { } 而不仅仅是if($query) { }

    另外,如果它的 CodeIgniter 确保您在 config/database.php 中将 db_debug 设置为 TRUE,否则您将看不到数据库错误。

    【讨论】:

    • 是的,它是 codeigniter 1.7.2,在我将 db_debug 更改为 TRUE 后,我得到了这个:` A Database Error Occurred Error Number: Select TROUBLE_ID, ASSIGNED_DATE, CREATOR, PROBLEM_DESCRIPTION, RESOLUTION, RESOLVED_DATE FROM表 1 其中 TROUBLE_ID = ABC000001067442`
    • 我认为堆栈剥离了一些,你能提供截图吗?这个错误没有任何意义......
    • 哦,没关系。因为你的 trouble_id 是一个字符串,你需要在它周围加上单引号。
    • 我的 Trouble_id 是一个 varchar2 并且我收到一个字符串 ABC00001,这是有道理的,我刚刚更改了它并且它工作了,谢谢!
    • 没关系,现在没有显示任何错误,但没有加载任何数据
    【解决方案2】:

    由于某种原因查询失败

    $this->db->_error_message();
    

    应该告诉你为什么

    $this->output->enable_profiler(TRUE); 
    

    应该给你更多关于查询的信息

    更新:

        $DB2 = $this-> load-> database('DB2', TRUE);
        if (!empty($idt)){
    
            $query = $DB2->query ("
    

    把 ^^ 改成 vv

        $DB2 = $this-> load-> database('DB2', TRUE);
        if (!empty($idt)){
    
            $query = $this->DB2->query ("
    

    【讨论】:

    • 不会是 $this->DB2->query() 吗?
    【解决方案3】:

    最后,当我在查询条件中使用双引号之前使用单引号时,我终于能够解决此问题,如下所示:

    Select TROUBLE_ID, ASSIGNED_DATE, CREATOR, PROBLEM_DESCRIPTION, RESOLUTION, RESOLVED_DATE 
    FROM TABLE1
    WHERE TROUBLE_ID = '" . $idt . "'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 2021-06-06
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多