似乎没有问题,我不明白为什么不返回数据。

这是我的存储过程:

DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`get_products`$$
CREATE PROCEDURE  `test`.`get_products`
(
    OUT out_productName VARCHAR(255)
)
BEGIN
SELECT productName INTO out_productName FROM products;
END $$
DELIMITER ;


这就是我所说的:

$rs = mysql_query( 'CALL get_products(@f)' );
$rs = mysql_query( 'SELECT @f' );
while($row = mysql_fetch_assoc($rs))
{
print_r($row);
}

最佳答案

这不能完全回答您的问题,但是一种解决方法是不使用输出参数

DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`get_products`$$
CREATE PROCEDURE  `test`.`get_products`
(

)
BEGIN
SELECT productName INTO @f FROM products;
END $$
DELIMITER ;


 mysql_query( 'set @f = 0;' );
$rs = mysql_query( 'CALL get_products()' );
$rs = mysql_query( 'SELECT @f' );
while($row = mysql_fetch_assoc($rs))
{
print_r($row);
}


如果我没记错的话,@ f将由数据库维护,并且可以通过sql会话进行访问

同样,如果您要从存储过程中获取结果的同时返回内容,那么您也想使用

$rs->close();
 $connection->next_result();


连接将是您命名连接字符串的任何名称

关于php - 为什么此存储过程不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16552297/

10-13 01:31