2017-07-03 17 views
0

PHP経由でストアドプロシージャを呼び出そうとしています。しかし、私は希望の出力を得ていない。 PHPで文法エラーが間違っています。 Stored Procを単独で実行すると、期待どおりに動作します。私はこのコードスニペットを与えているの下に -PHPから返されたMySqliストアドプロシージャ

<?php 

$host = "localhost"; 
$db_user = "userid"; 
$db_password = "password"; 
$db_name = "trialdb"; 

$con = mysqli_connect($host,$db_user,$db_password,$db_name); 

$name = $_POST["Name"]; 
$id = $_POST["Id"]; 

$storedProc = "CALL CheckNameId(?,?, @returnStatus)"; 

$stmt = mysqli_prepare($con, $storedProc); 
mysqli_stmt_bind_param($stmt,"si",$name, $id); 
mysqli_stmt_execute($stmt); 
mysqli_stmt_bind_result($stmt, $returnStatus); 

mysqli_stmt_fetch($stmt); 
echo $returnStatus; 

mysqli_stmt_close($stmt); 
mysqli_close($con); 

?> 

私はmysqli_stmt_bind_paramでの誤差、mysqli_stmt_execute、mysqli_stmt_bind_result ...ブール値として渡された最初のパラメータを有する取得しています。これは$ stmtをブール値として解釈しています。 ご理解いただけますようお願いいたします。 バインド結果を使用している方法が間違っていると思われます。 ストアドプロシージャから「ステートメント」、「結果セット」、または「結果セット」の処理に関する理解のギャップがあるかもしれません。 いいリンクがあれば誰でも提案できますが、私は参考にしたいと思います。

答えて

0

ストアドプロシージャのOUTパラメータはセッション変数の値のみを設定し、結果には戻りません。

あなたはその後、セッション変数を自分で照会する必要があります:

$storedProc = "CALL CheckNameId(?,?, @returnStatus)"; 
$stmt = mysqli_prepare($con, $storedProc); 
mysqli_stmt_bind_param($stmt,"si",$name, $id); 
mysqli_stmt_execute($stmt); 
mysqli_stmt_close($stmt); 

$sql = "SELECT @returnStatus"; 
$result = mysqli_query($con, $sql); 
$row = mysqli_fetch_row($result); 
echo $row[0]; 
+0

あなたの提案ができます。私はMySql Stored ProcsがPHP内で処理される方法についてもっと理解しようとします。 –

関連する問題