【问题标题】:CodeIgniter 2 MSSQL query returns false instead of resourceCodeIgniter 2 MSSQL 查询返回 false 而不是资源
【发布时间】:2015-03-11 05:11:07
【问题描述】:

我是 CodeIgniter 的新手,我的新工作中的一个项目是在 CodeIgniter 中构建的,所以我有点使用以前程序员编写的片段作为基础。

我试图在我们的 orders_model 中创建一个方法,其中包含一个我无法从中获得任何结果的查询。

我直接在 MS SQL Server Management Studio 08 中构建了查询并在那里获得了 200 多行,但是当我将其粘贴到我的方法中时,查询的结果资源为 false。

我从我创建的另一个方法中复制了这个方法,效果很好,甚至去掉了所有的验证,所以它会简单地运行并返回查询。

这里是精简的方法:

public function get_part_index($pick_id, $return_data=true)
{
    $orders = $this->load->database('orders', true);

    $sql = "SELECT
                u.metraPartNumber ,
                STUFF(
                    (
                        SELECT
                            DISTINCT ', ' + ic.Box
                        FROM
                            orderScans.dbo.FullCaseScanTable AS ic JOIN upcCodeDatabase.dbo.upc AS iu
                                ON ic.FullUccCode = iu.fullUccCode
                        WHERE
                            u.PartNumber = iu.PartNumber
                            AND c.PickNumber = ic.PickNumber
                        GROUP BY
                            ic.Box FOR XML PATH('')
                    ) ,
                    1 ,
                    1 ,
                    ''
                ) AS BoxLocation
            FROM
                orderScans.dbo.FullCaseScanTable AS c JOIN upcCodeDatabase.dbo.upc AS u
                    ON c.FullUccCode = u.fullUccCode
            WHERE
                c.PickNumber = ?
                GROUP BY u.PartNumber ,
                c.PickNumber
            ORDER BY
                u.PartNumber";

    $query = $orders->query($sql, array($pick_id));

    /***********************************************
     * When I add die(var_dump($query)) here  I get (bool)false
     ***********************************************/

    if ($query !== FALSE) {
        $result['data'] = $query->result_array();
        $result['success'] = TRUE;
        $result['msg'] = NULL;
    } else {
        $result['data'] = NULL;
        $result['msg'] = "Pick ID '$pick_id' not found!";
        $result['success'] = FALSE;
    }

    return $result;
}

我唯一能想到的可能是数据库类/适配器不喜欢子查询?

任何帮助将不胜感激!谢谢

【问题讨论】:

  • 当我将查询简单地更改为 $sql = "SELECT TOP 10 * FROM orderScans.dbo.FullCaseScanTable";它工作正常。 CodeIgniter 或 php odbc 数据库适配器不喜欢更复杂的查询。

标签: sql-server codeigniter-2


【解决方案1】:

在尝试了一个视图(它做了同样的事情......)之后,我决定提取原始数据并在 php 中运行数据,按照我想要的方式将它们组合在一起。

【讨论】:

    猜你喜欢
    • 2014-11-28
    • 2014-03-20
    • 1970-01-01
    • 2021-06-04
    • 2023-03-20
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多