我似乎无法使用PDO(PHP)从我的存储过程(MYSQL)获取任何输出。
存储过程:
CREATE PROCEDURE getUserId(serviceId VARCHAR(64), serviceInput VARCHAR(32))
BEGIN
SELECT id FROM users WHERE servid = serviceId AND service = serviceInput;
END
PHP代码:
$mysqlConn = mysqlPDOLogin();
$stmt = $mysqlConn->prepare("CALL getUserId(?,?);");
$stmt->bindParam(1, $USERID);
$stmt->bindParam(2, $USERPROVIDER);
$stmt->execute();
$returned_a = $stmt->fetch();
echo $returned_a['id'];
它没有得到任何回报。我已经从存储过程中复制了基本的选择代码并直接在PHP代码中使用它并且它可以工作,但是无法通过存储过程使它工作。
任何帮助将不胜感激......
答案 0 :(得分:0)
您没有进行任何明显的错误检查。 Prepare(),bindParam()和execute()都会通过返回false或抛出异常来提醒您错误,具体取决于PDO所处的错误报告模式。
我会假设你处于“返回假”模式。
您需要检查$ stmt是否是PDOStatement对象,bindParam语句没有返回false并且execute没有返回false。如果他们中的任何一个,那么你需要使用errorCode()和errorInfo()来找出问题所在。
另外,对于我来说,使用存储过程基本上是一个简单的查询看起来有些过分。为什么不这样做呢?
$stmt = mysqlConn->prepare ('SELECT id FROM users WHERE servid = ? AND service = ?');