3

可能重复:
无法在给定上下文中返回结果集

我正在尝试使用 PHP 调用一个基本的存储过程。但是 mysql 会产生类似“PROCEDURE softland.getAllProducts can't return a result set in the given context”的错误。

存储过程

 DELIMITER //
 CREATE PROCEDURE GetAllProducts()
 BEGIN
 SELECT *  FROM products;
 END //
 DELIMITER ;

PHP代码是

<?php
$con=mysql_connect("localhost","root","");
mysql_select_db("softland",$con);
$id = 1;
$result = mysql_query("call getAllProducts()");
echo $result;

if ($result === FALSE) {
die(mysql_error());
}
while($row=mysql_fetch_array($result)){
    echo "<br>".$row['name'];
}
echo "Succees";
 ?>
4

3 回答 3

1

好吧,这个答案直接来自mysql_connect上的 php 页面:

$this->con = mysql_connect($this->h,$this->u,$this->p,false,65536);

它告诉您的 mysql 客户端使用多语句支持(另请参阅 mysql 客户端常量: http: //php.net/manual/en/mysql.constants.php#mysql.client-flags

于 2012-05-27T15:06:36.847 回答
0

尝试这个,

Function GetProducts($out)
{
    $query.= "CREATE PROCEDURE GetAllProducts() ";
    $query.= "BEGIN";
    $query.= "SELECT *  FROM products;";
    $query.= "END";
    return $query;
}

在代码中放这个,

$result = mysql_query(GetProducts());

希望有效!

于 2012-05-27T14:28:54.747 回答
0

我认为问题在于您使用的是旧的 mysql 函数而不是新的 mysqli library

尝试按照本手册页上的示例进行操作。

于 2012-05-27T14:52:33.147 回答