存储过程不适用于PHP调用

时间:2012-05-27 14:15:26

标签: php mysql stored-procedures

  

可能重复:
  Can't return a result set in the given context

我正在尝试使用PHP调用基本存储过程。但是mysql会产生一个错误,例如“PROCEDURE softland.getAllProducts无法在给定的上下文中返回结果集”。

存储过程

 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";
 ?>

3 个答案:

答案 0 :(得分:1)

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

  

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

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

答案 1 :(得分:0)

试试这个,

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

在代码中,

$result = mysql_query(GetProducts());

希望有效!!

答案 2 :(得分:0)

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

尝试按照this manual page上的示例进行操作。