使用CodeIgniter的Active Record查询不返回值...

时间:2011-12-22 21:10:29

标签: php codeigniter

这是我正在运行的代码。

$query = $this->db->query("DECLARE @tmp TABLE (ContactID UNIQUEIDENTIFIER)
INSERT INTO tblCD (" . ArrayToString($fieldsCDArray) . ")
OUTPUT Inserted.ContactID INTO @tmp
VALUES (" . ArrayToDBString($valuesCDArray) . ")
INSERT INTO tblCCO (ContactID, " . ArrayToString($fieldsCCOArray) . ")
VALUES ((SELECT ContactID FROM @tmp), " . ArrayToDBString($valuesCCOArray) . ")
SELECT ContactID FROM @tmp");

$result = $query->row(); 

我已经运行$ this-> db-> last_query()来验证SQL代码在SQL服务器中是否真正有效。最终返回单行,如预期的那样。但是我没有从CodeIgniter返回上面的代码。我也试过用result()和result_array()来运行它只是为了踢,但仍然没有。

CodeIgniter不喜欢从包含多个语句的查询中返回结果,还是我必须以不同的方式获得结果? (对于任何人来说,我只是想尝试获取最后一个插入的ID,但它是一个GUID所以我不能使用$ this-> db-> insert_id()。

任何帮助或建议将不胜感激。感谢。

另外,忽略ArrayToDBString()方法,那些肯定不是问题,因为,就像我说的,我已经打印了最后一个查询并成功运行了SQL。此外,通过SQL运行时得到的结果是一个名为ContactID的列。

1 个答案:

答案 0 :(得分:1)

  

我正在呼应$result并且它没有显示任何内容

row()返回一个对象,而不是字符串,即使您只选择了一列。要访问该值,您仍然必须明确地调用它:

$record = $query->row();
echo $record->ContactID;

如果仍然无效,请尝试一次运行一个查询,而不是一次性将所有查询传递给$this->db->query()

...与往常一样,使用error_reporting(E_ALL)启用错误报告,并使用var_dump()print_r()等内容来调试变量,而不是echo