【发布时间】:2017-05-17 03:38:58
【问题描述】:
您好,我对 PDO 有疑问,我有一个这样的 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" ; }
但我遇到了一个错误:
致命错误:未捕获的 PDOException:SQLSTATE[HY000]:一般错误
有人能解释一下为什么吗? 谢谢你的帮助
【问题讨论】:
-
如果不满足
IF条件,则存储过程不会返回任何内容。有可能是这样吗? -
mysql 能否返回零结果导致 pdo 错误? @DanFarrell
-
很难说,因为您没有提供完整的示例。我不确定。
-
我尝试使用 pdo->query(call user_regis(a,a,a,a,a) ) 将数据插入到我的过程中;这是第一次工作,但之后我遇到了一个错误,就像我在@DanFarrell 之前所说的那样
标签: php mysql stored-procedures pdo