0

直升机,

我有一个包含 7 个 IN 参数和 3 个 OUT 参数的存储过程。我需要从 PHP 传递 7 个参数 IN,使用过程执行查询,并检索 3 个 OUT 参数。

我正在使用启用了持久连接模式的 mysqli。(出于负载考虑)执行查询和获取结果的最有效方法是什么?

我需要一些不影响其他同时运行的 PHP 脚本的东西,并且可以清理结果本身,这很简单。

这就是我的应用程序(简化)(不是一个工作示例,正是我希望的那样)

$inParam1 = 'wer';
$inParam2 = 'fewf';
$inParam3 = 'dsf';
$inParam4 = 'vccv';
$inParam5 = '34t3'; 
$inParam6 = 'ter';
$inParam7 = 'ert';
$query = "CALL my_procedure('$inParam1', '$inParam2', '$inParam3', '$inParam4', '$inParam5', '$inParam6', '$inParam7', @outParam8, @outParam9, @outParam10); SELECT @outParam8, @outParam9, @outParam10;";
$result = $mysql_query($query);
list($outParam1, $outParam2, $outParam3) = mysql_fetch_array($result);
echo $outParam1; // String param #1 that my procedure returned as an OUT variable
echo $outParam2; // String param #2 that my procedure returned as an OUT variable
echo $outParam3; // String param #3 that my procedure returned as an OUT variable

如果有人可以展示这段代码在现实中的样子,请太好了!

我显然正在使用具有正确连接的mysqli等,但是我在互联网上找到的示例确实令人困惑并且似乎效率低下,我也担心它是否会与其他客户端发生冲突,因为它的工作方式类似于“nextResult”和其他一些奇怪的功能。

非常感谢!

PHP 5.3,MySQL 5.5

4

2 回答 2

0

试试看这里。因为我对此不太熟悉。:)

http://www.mysqltutorial.org/stored-procedures-parameters.aspx

您需要先创建一个查询。然后,此查询将作为可调用过程存储在数据库中。然后稍后使用您可以调用该过程的任何语言。

DELIMITER //  
    CREATE PROCEDURE GetUserByCountry(IN countryName VARCHAR(255))  
        BEGIN 
            SELECT name, email   
            FROM users  
            WHERE country = countryName;  
        END //  
DELIMITER ;

然后调用它。

CALL GetUserByCountry('mexico')

返回居住在墨西哥的所有用户名和电子邮件。

于 2011-09-09T11:32:42.447 回答
0

我相信如果您想创建一个动态查询字符串,例如您的,您需要将 {} 放在字符串中的变量周围。

$query = "CALL my_procedure('{$inParam1}', '{$inParam2'}, '{$inParam3}', '{$inParam4}', '{$inParam5}', '{$inParam6}', ' {$inParam7}',@outParam8,@outParam9,@outParam10);选择@outParam8,@outParam9,@outParam10;";

于 2011-09-09T14:18:38.537 回答