【发布时间】:2011-12-22 21:10:29
【问题描述】:
这是我正在运行的代码。
$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 并且它什么也没显示。我还做了一个 $this->db->last_query() 来提取 SQL,然后直接在 Management Studio 中运行它并验证它在那里返回结果。
-
var_dump() 代替它。如果为 FALSE,则 echo 不会显示它。一步一步来,先看看代码是否有效,再看看为什么没有结果
-
正如我在下面的答案中提到的,我也尝试了 print_r() 并得到了一个空数组。
标签: php codeigniter