你能帮我处理PHP 5.3和MySQL 5.5存储过程以及mysqli库+持久连接吗


Could you please assist me with PHP 5.3 and MySQL 5.5 stored procedures and mysqli library + persistent connection

Helo,

我有一个存储过程,它有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

试着看看这里。我对此并不太熟悉。:(

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')

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

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

$query="CALL my_procedure('{$inParam1}','{$inParam2}'、'{$0inParam3}'和'{$1inParam4}';'{$sinParam5}''、'{$inParam6}'以及'{$SinParam7}'(;SELECT@outParam8、@outParam9、@outParam10;";