php - 为什么这个存储过程不起作用?

标签 php mysql stored-procedures

看起来没有问题,我不明白为什么不返回数据。

这是我的存储过程:

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 session 访问

如果您在从存储过程获取结果时返回一些内容,您也想使用

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

连接将是您命名的连接字符串

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

相关文章:

当 LIMIT 太高时,PHP 的 PDO 查询不执行?

c# - 将值从存储过程返回到方法

java - Spring Data JPA NamedStoredProcedureQuery 多个输出参数

mysql - 创建存储过程 phpmyadmin 时出错

php - MySQL:获取开始和结束时间之间 TIME ('xx:yy:zz' ) 的记录

php - MySQL - 选择每行的列是否为 TRUE?

php - 从十六进制代码创建 UTF-8 字符串

带有CSS问题的PHP随机DIV

mysql - 如何将 MySQL 主键从签名更改为未签名?

php - 如果 varchar 字段的值大于 9999,Mysql 'between' 条件不起作用