【发布时间】: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 数据库适配器不喜欢更复杂的查询。