3

重複の可能性:
指定されたコンテキストで結果セットを返すことができません

PHPを使用して基本的なストアドプロシージャを呼び出そうとしています。しかし、mysqlは「PROCEDUREsoftland.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";
 ?>
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

Try this,

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

In the code put this,

$result = mysql_query(GetProducts());

Hope that works !!

于 2012-05-27T14:28:54.747 に答える
0

問題は、新しい mysqli ライブラリの代わりに古い mysql 関数を使用していることだと思います。

このマニュアルページの例に従ってみてください。

于 2012-05-27T14:52:33.147 に答える