2017-09-27 54 views
0

除了從我的模型觸發存儲過程並開始在布爾錯誤行上顯示對成員函數result()的調用外,一切正常。在切換到sqlsrv後調用成員函數result()布爾型錯誤dbdriver

這是一個沒有使用SP的代碼示例,它工作正常。

function get_myeligible_info($id) 
{ 
    $sql = "SELECT * FROM emp_list_manila where employee_empid = '".$id."'"; 
    $query = $this->db->query($sql); 
    return $query->result(); 
} 

這裏是顯示錯誤的確切代碼。

function get_for_batch_insert2() 
{ 

$query = $this->db->query("[INSERT_TTUMBATCH]"); 
return $query->result(); //ERROR HERE 

} 

Web應用程序框架:笨3 數據庫:MS SQL第一

+0

存儲過程是做什麼的?它是否返回結果集? – ZLK

+0

是的,它從表中選擇一個數據並同時插入。 –

+0

您可能需要考慮在存儲過程開始時使用'SET NOCOUNT ON;'。這將防止插入作爲結果集處理(不返回行)。還有其他方法可以解決這個問題,但我想這可能是導致你的問題的原因。 – ZLK

回答

0

第一件事,從來沒有把變量直接進入查詢。始終使用parameter binding這樣的:

function get_myeligible_info($id) 
{ 
    $sql = "SELECT * FROM emp_list_manila WHERE employee_empid = ?"; 
    $query = $this->db->query($sql, [$id]); 
    return $query->result(); 
} 

對於存儲過程,你不能只是叫他們的名字,you have to use EXEC

function get_for_batch_insert2() 
{ 
    $query = $this->db->query("EXEC INSERT_TTUMBATCH"); 
    return $query->result(); 
} 

對於這兩個電話,你應該檢查錯誤和處理他們適當地:

function get_for_batch_insert2() 
{ 
    $query = $this->db->query("EXEC INSERT_TTUMBATCH"); 
    if ($query) { 
     return $query->result(); 
    } else { 
     return false; 
    } 
} 
+0

謝謝,它現在可以工作,注意不把變量放在查詢中。 –

相關問題