簡體   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