使用PDO调用mysql程序得到了一般错误

时间:2017-01-03 05:18:02

标签: php mysql stored-procedures pdo

您好我对PDO有疑问,我有一个像这样的mysql程序:

foreach ($conn->query($sqlqb) as $row)

  { ?>

 <option value=<?php echo $row[id];?>><?php echo $row['Name_Team_Position'];?></option>


 <?php } ?> 

然后我用PDO调用我的程序:

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

但是我收到了一个错误:

  

致命错误:未捕获PDOException:SQLSTATE [HY000]:

中的常规错误
有人可以解释一下为什么吗? 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

根据我们在评论中的对话,我认为您应该将SELECT向下移动到END IF行以下,这样无论是否满足IF条件,它都会被执行。

您还必须向存储过程提供所需的任何参数。