Php 为什么此存储过程没有';不行?

Php 为什么此存储过程没有';不行?,php,mysql,stored-procedures,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

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

这是我的存储过程:

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);
}
尝试:

并称之为:

$rs = mysql_query( 'CALL test.get_products()' );
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();

连接可以是任何您命名的连接字符串

mysql_*命令的使用既陈旧又不安全。您真的应该考虑使用mysql进行交互。
$rs->close();
 $connection->next_result();