2012-06-05 69 views
0

我一直在編寫一個註冊頁面(登錄系統)在PHP和MySQL的網站。我使用兩個相同的存儲過程。第一個存儲過程檢查電子郵件地址是否已存在於數據庫中。第二個將用戶提供的數據插入到mysql數據庫中。用戶對這兩個程序都具有EXECUTE權限。當從php腳本單獨執行它們時,它們工作正常。但是,當我在腳本中使用它們第二個存儲過程(插入)不起作用。當通過php調用存儲過程奇怪的錯誤

存儲過程1.

DELIMITER $$ 
CREATE PROCEDURE reg_check_email(email VARCHAR(80)) 
BEGIN 
SET @email = email; 
SET @sql = 'SELECT email FROM user_account WHERE user_account.email=?'; 
PREPARE stmt FROM @sql; 
EXECUTE stmt USING @email; 
END$$ 
DELIMITER; 

存儲過程2

DELIMITER $$ 
CREATE PROCEDURE reg_insert_into_db(fname VARCHAR(40), lname VARCHAR(40), email  VARCHAR(80), pass VARBINARY(32), licenseno VARCHAR(80), mobileno VARCHAR(10)) 
BEGIN 
SET @fname = fname, @lname = lname, @email = email, @pass = pass, @licenseno = licenseno, @mobileno = mobileno; 
SET @sql = 'INSERT INTO user_account(email,pass,last_name,license_no,phone_no) VALUES(?,?,?,?,?)'; 
PREPARE stmt FROM @sql; 
EXECUTE stmt USING @email,@pass,@lname,@licenseno,@mobileno; 
END$$ 
DELIMITER; 

當我測試這些從PHP示例腳本插入件不工作,但是第一存儲過程(reg_check_email() ) 工作中。如果我評論第一個(reg_check_email),第二個存儲過程(reg_insert_into_db)工作正常。

<?php 
require("/wamp/mysql.inc.php"); 
$r = mysqli_query($dbc,"CALL reg_check_email('[email protected]')"); 
$rows = mysqli_num_rows($r); 
if($rows == 0) { 
    $r = mysqli_query($dbc,"CALL reg_insert_into_db('a','b','[email protected]','c','d','e')"); 
    } 
?> 

我無法弄清楚這個錯誤。

在此先感謝, 拉維。

+0

你得到的錯誤信息是什麼? – somnath

+0

您是否通過執行echo來檢查$行是否正在返回? – somnath

+0

那麼它返回什麼? – somnath

回答

2

我遇到了類似的問題,同時使用php腳本執行存儲過程和查詢。

您應該嘗試mysqli_multi_query來執行您的SP。
調用程序後。使用mysqli_free_result消耗結果。
您也可以參考this link。希望,它會幫助你。