我有一个相当简单的存储过程。
DELIMITER //
CREATE PROCEDURE getBuyerID(
IN personID INT(11),
OUT buyerID INT(11)
)
BEGIN
SELECT BUYER_ID FROM BUYER WHERE PERSON_ID = personID;
END //
DELIMITER ;
存储过程没有任何错误。为了测试它,我尝试通过phpMyAdmin运行对存储过程的调用,使用以下行。
CALL getBuyerID('28',@buyer_id); SELECT @buyer_id;
当我运行以上行时,我收到此错误。
#2014 - Commands out of sync; you can't run this command now
我注意到如果我只使用部分调用,我将在phpMyAdmin中获取存储过程的结果。
CALL getBuyerID('28',@buyer_id);
但我不知道为什么原来的电话无法正常工作,因为这是我以前打过电话的原因。在phpMyAdmin中测试时,调用工作正常,但我不知道如何通过PHP调用存储过程时检索结果。以下是我过去用来调用存储过程并从PHP中获取结果的代码。
$query = "CALL getBuyerID('$person_id',@buyer_id)";
$result = mysql_query($query);
$query = "SELECT @buyer_id as b";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$buyer_id = $row['b'];
echo "Buyer ID is $buyer_id";