2011-09-09 10 views
0

HELOコマンドで私を支援してもらえ あなたは、PHP 5.3とMySQL 5.5のストアドプロシージャとmysqliのライブラリ+永続的な接続

I INパラメータ7と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

+0

コードの例はありますか? – Adam

+0

ちょうどそれが私の頭の中にあるように投稿されました – dmitry

+0

私はそれを達成するための最も最適で効率的な方法を示唆するのに役立つ場合、私はそれを達成する方法を理解することができないため、 bind_variablesまたはそれを使って、それは素晴らしいだろう – dmitry

答えて

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

メキシコに住むすべてのユーザー名とメールアドレスを返します。

+0

Nooooooooo私はすでにSQLプロシージャを正しく作成していますし、それも機能します(!)をmysql adminから取得していますが、動的IN変数でPHPから呼び出そうとしていますが、読めるようにしようとしていますが、あまりにも混乱してしまいます。多くのありがとう – dmitry

+0

Nooooooooは正しく動作していますが、PHPからIN変数を渡して後で読み込むことができません。 – dmitry

0

あなたのような動的クエリ文字列を作成したい場合は、文字列内の変数を{}で囲む必要があります。

$ query = "{$ inParam1}、{{inParam2}}、{{inParam3}、{{inParam4}}、{{inParam5}}、{$ inParam6} {outParam8、@ outParam9、@ outParam10}); SELECT @ outParam8、@ outParam9、@ outParam10; ";

+0

Nooooooは問題ではなく、どのようにも動作しません。どんなレベルでも働かない – dmitry

関連する問題