似乎没有什么问题,我不明白为什么不返回数据。
这是我的存储过程:
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);
}发布于 2013-05-15 04:42:46
这并没有完全回答您的问题,但解决方法是不使用输出参数
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();连接可以是您为连接字符串命名的任何名称
发布于 2013-05-15 04:36:49
尝试:
DELIMITER $$
DROP PROCEDURE IF EXISTS test.get_products;
CREATE PROCEDURE test.get_products()
BEGIN
SELECT productName FROM products;
END $$
DELIMITER ;并将其称为:
$rs = mysql_query( 'CALL test.get_products()' );
while($row = mysql_fetch_assoc($rs))
{
print_r($row);
}https://stackoverflow.com/questions/16552297
复制相似问题