2017-01-03 40 views
0

您好,我有問題關於PDO,我有一個MySQL的過程是這樣的:調用mysql的程序得到了普遍的錯誤

CREATE PROCEDURE `user_regis`(IN `name` VARCHAR(50), IN `hp` VARCHAR(12), IN `email` VARCHAR(30), IN `username` VARCHAR(20), IN `password VARCHAR(20)) 

    BEGIN 

     IF (SELECT NOT EXISTS (SELECT * FROM USER WHERE USER_USERNAME = username AND USER_EMAIL = email)) THEN 

      INSERT INTO USER 
       (USER_ID, USER_NAME, USER_HP, USER_EMAIL, USER_USERNAME, USER_PASSWORD) 
      VALUES 
       (null,name,hp,email,username,password) ; 

      INSERT INTO `VOUCHER`(`VOUCHER_CODE`, `USER_USERNAME`, `VOUCER_STATUS`, `VOUCHER_EXPIRY`) 
      VALUES((SELECT CONCAT('TRVL',ROUND(RAND()*1000000))),username,1,(SELECT NOW() + INTERVAL 48 HOUR)) ; 

      SELECT * FROM USER WHERE USER_USERNAME = username ; 

     END IF; 

    END 

,然後我打電話使用PDO我的方法:

$regis = $this->pdo->query('call user_regis(a,a,a,a,a)'); 
if($regis->fetchColumn > 0){ echo "hai" ; } 

但我得到了一個錯誤:

Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error in

有人可以解釋我爲什麼嗎? 感謝您的幫助

+0

看起來不像存儲過程返回任何東西,如果不符合'IF'條件。這可能是這種情況嗎? –

+0

可以mysql返回零結果使pdo錯誤? @DanFarrell – Herdy

+0

很難說,因爲你沒有提供一個完整的例子。我不確定。 –

回答

0

基於我們的意見的談話,我是這麼認爲的它無論IF條件是否滿足執行你應該下來END IF線下方移動SELECT

您還必須提供存儲過程所需的任何參數。

+0

我被編輯我的問題謝謝 – Herdy

+0

但你只做了我告訴你的一半。 –

+0

你說得對,我的mysql程序中的IF條件有問題,所以我刪除它並在PHP中使用IF條件,非常感謝你:) – Herdy