2016-01-07 26 views
1

我試圖獲得最後插入的值,但我得到的錯誤:如何找到程序笨最後插入值

"Incorrect number of arguments for PROCEDURE hssl.insert_brouchermaster; expected 2, got 3"

程序

BEGIN 
INSERT INTO `brouchermaster`(`broucher_name`,`order_number`) VALUES (brouchername,orderno,NOW()); 
SET @inserted_instance_id = LAST_INSERT_ID(); 
END 

型號:

$insert_result = $this->db->query("CALL insert_brouchermaster('".$broucher_name."', '".$order_number."', @inserted_instance_id)"); 
$last_insert_query = $this->db->query("SELECT @inserted_instance_id"); 
+1

讀取錯誤,在過程中,您有兩個列,但三個值'NOW()'是我沒有在CI中使用的SP第三 – cske

+0

,但不會last_insert_id()工作? – goseo

回答

1

CI函數db->query('your query here')返回true或false,因此它不會返回y的@inserted_instance_id OU。我想你會需要改變

$insert_result = $this->db->query("CALL insert_brouchermaster('".$broucher_name."', '".$order_number."', @inserted_instance_id)"); 

這個

$this->db->query("CALL insert_brouchermaster('".$broucher_name."', '".$order_number."'"); 
//and add this line 
$new_id = $this->db->insert_id(); 

這麼說,我已經沒有不使用存儲過程非常頻繁,而不是一段時間,所以我的語法可能出現故障。永遠不要少,使用insert_id()來得到你的後。

的功能here

文檔還看到這個SO question