繁体   English   中英

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

[英]Cant get stored procedure resultset via PDO PHP

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

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

您没有进行任何明显的错误检查。 根据PDO所处的错误报告模式,Prepare(),bindParam()和execute()都会通过返回false或引发异常来提醒您注意错误。

我将假设您处于“返回假”模式。

您需要检查$ stmt是PDOStatement对象,bindParam语句没有返回false,而execute没有返回false。 如果它们中的任何一个都做了,那么您需要使用errorCode()和errorInfo()来找出问题所在。

另外,对我来说,使用存储过程进行基本的简单查询似乎有些过分。 为什么不仅仅执行以下操作?

$stmt = mysqlConn->prepare ('SELECT id FROM users WHERE servid = ? AND service = ?');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM