这是我正在运行的代码。
$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 server中工作。它最终像预期的那样返回单行。但是我没有得到任何从CodeIgniter与上述代码返回。我也试过用result()和result_array()来运行它,只是为了踢,仍然没有。
CodeIgniter是否不喜欢从查询中返回多个语句的结果,或者我必须以不同的方式获得结果?(对于任何人问,我只是想得到最后插入的id,但它是一个GUID,所以我不能使用$this->db->insert_id()。
任何帮助或建议将不胜感激。谢谢。
另外,忽略ArrayToDBString()方法,这些绝对不是问题,因为,就像我说的,我已经打印了最后一个查询并成功地通过SQL运行它。此外,通过SQL运行它时得到的结果是一个名为ContactID的单列。
我回显的是
$result
,但是没有显示
row()
返回一个对象,而不是字符串,即使您只选择了一个列。要访问该值,仍然必须显式地调用它:
$record = $query->row();
echo $record->ContactID;
如果仍然不起作用,尝试一次运行一个查询,而不是一次将所有查询传递给$this->db->query()
。
…并且像往常一样,打开error_reporting(E_ALL)
的错误报告,并使用var_dump()
或print_r()
之类的东西来调试变量,而不是echo
。