2011-12-22 32 views
1

這是我正在運行的代碼。查詢使用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一列。

+0

你如何驗證沒有任何回報?此代碼不會有任何輸出。如果您不確定查詢本身是否會導致問題,那麼您是否使用更簡單的查詢進行測試?你似乎在這裏有幾個疑問,你一次試一次嗎? – 2011-12-22 21:13:49

+0

我在迴應$結果,它什麼也沒有顯示。我還完成了$ this-> db-> last_query()來提取SQL,然後直接在Management Studio中運行它,並驗證它返回結果。 – 2011-12-22 21:19:16

+0

var_dump()代替它。如果它是假的,echo將不會顯示它。一次只執行一步,首先看代碼是否工作,然後看看爲什麼沒有結果 – 2011-12-22 21:20:40

回答

1

我呼應$result,它的深藏不露

row()返回一個對象,而不是字符串,即使您只選擇了一列。要訪問值,你仍然必須顯式調用:

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

如果仍然不行,請嘗試一次運行你的查詢,而不是一個路過他們都$this->db->query()一次。

...和往常一樣,把錯誤與error_reporting(E_ALL)報告和使用類似var_dump()print_r()調試,而不是echo變量。

+0

應該更清楚一點。我也嘗試了print_r(),它只是顯示了一個空數組。 – 2011-12-22 21:33:53

+0

這很奇怪,它至少應該是一個對象,而不是一個數組。你確定你正在使用'row()'嗎?分開運行查詢,發生了什麼?當你嘗試另一個更簡單的查詢時發生了什麼,比如'select * from tblCD'? – 2011-12-22 21:35:27

+0

它可能是一個對象。我知道在某一點上,我也嘗試過結果和array_result,所以我可以看到這是我爲什麼提到它的空數組。做一個簡單的查詢就像一個選擇工作得很好。我在各地都用它們,沒問題。我想知道如果$ query()只是不喜歡從更復雜的查詢或其他東西返回結果。 – 2011-12-22 21:44:59