无法通过PDO PHP获取存储过程结果集

时间:2012-08-04 05:06:26

标签: php mysql pdo resultset procedure

我似乎无法使用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代码中使用它并且它可以工作,但是无法通过存储过程使它工作。

任何帮助将不胜感激......

1 个答案:

答案 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 = ?');