2011-11-16 42 views
0

我必須在mysql中使用存儲過程插入數據。這裏是我對該SP的SP和函數調用,但不能使用它們插入值。你可以請驗證並給我做什麼? SP是:使用存儲過程在mysql中插入查詢

delimiter ; ; 

DROP PROCEDURE IF EXISTS sp_insertUserDetails ; ; 
CREATE PROCEDURE sp_insertUserDetails() 
BEGIN 
     INSERT INTO tbl_userDetails 
     (strEmail,bitAllowClicktoFBProfile,bitIsAbbreviateLastName, strAboutMe) 
VALUES ($strEmail, $bitAllow, $bitAbbreviate, $strAbout); 
END 

調用此SP從PHP文件:

$query = mysql_query("CALL sp_insertUserDetails($strEmail, $bitAllow, $bitAbbreviate, $strAbout)"); 
+2

變化'delimiter'價值,並嘗試 – diEcho

回答

1

你不定義任何參數的SP - 你甚至試圖把它直接從SQL如:

mysql> call sp_insertUserDetails("foo", "bar", "dave", "str"); 
ERROR 1318 (42000): Incorrect number of arguments for PROCEDURE test.sp_insertUserDetails; expected 0, got 4 

您需要類似的東西

DROP PROCEDURE IF EXISTS sp_name; 
delimiter ;; 
CREATE PROCEDURE sp_name(fname varchar (20), lname varchar(20)) 
BEGIN 
    SELECT concat('Hello ', fname, ',', lname); 
END 
;; 
delimiter ; 
0

只是這樣做

我在這裏假設所有值都在varchar

DELIMITER // 

DROP PROCEDURE IF EXISTS sp_insertUserDetails; 
CREATE PROCEDURE sp_insertUserDetails( 
IN strEmail varchar(255), 
IN bitAllow varchar(255), 
IN bitAbbreviate varchar(255), 
IN strAbout varchar(255) 
) 
BEGIN 
     INSERT INTO tbl_userDetails 
     (strEmail,bitAllowClicktoFBProfile,bitIsAbbreviateLastName, strAboutMe) 
VALUES (strEmail, bitAllow, bitAbbreviate, strAbout); 
END // 
DELIMITER ; 

,並呼籲像這樣

mysql_query(CALL sp_insertUserDetails($strEmail, $bitAllow, $bitAbbreviate, $strAbout)) 
+0

對不起diEcho,現在是無錯誤。但插入到表中不起作用。 – Karthika

+0

到目前爲止你做了什麼? – diEcho