0

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

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

4

1 回答 1

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 = ?');
于 2012-08-04T05:49:16.977 回答