ホームページ  >  記事  >  データベース  >  PDO でストアド プロシージャを呼び出すときに発生する「OUT または INOUT 引数 ... は変数ではありません」エラーを解決する方法

PDO でストアド プロシージャを呼び出すときに発生する「OUT または INOUT 引数 ... は変数ではありません」エラーを解決する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-07 00:38:03185ブラウズ

How to Resolve

PDO を使用した Out パラメーターを使用したスト​​アド プロシージャの呼び出し

この質問では、PHP で PDO を使用して出力パラメーターを使用してストアド プロシージャを呼び出しようとしたときに発生した問題について説明します。エラー メッセージ「SQLSTATE[42000]: 構文エラーまたはアクセス違反: ルーチン mydb.proc_OUT の 1414 OUT または INOUT 引数 1 は、BEFORE トリガーの変数または NEW 疑似変数ではありません」が表示されます。

これを解決するにはこの問題が発生した場合は、次の手順が推奨されます。

  1. 出力パラメータを取得するために別のクエリを使用します。 出力パラメータを直接バインドする代わりに、別のクエリを実行して、ストアド プロシージャの実行後の出力パラメータ。例:
$dbh->query("CALL SomeStoredProcedure($someInParameter1, $someInParameter2, @someOutParameter)");
$dbh->query("SELECT @someOutParameter");
  1. ストアド プロシージャに "SELECT @someOutParameter" を挿入します: あるいは、ストアド プロシージャに "SELECT @someOutParameter" を挿入してからバインドします準備されたステートメントを使用して結果を出力パラメータに渡します。例:
$stmt = $dbh->prepare("CALL SomeStoredProcedure(?, ?)");
$stmt ->execute(array($someInParameter1, $someInParameter2));

これらのソリューションを実装すると、ストアド プロシージャの出力パラメーターに関連するエラーが解決されます。

以上がPDO でストアド プロシージャを呼び出すときに発生する「OUT または INOUT 引数 ... は変数ではありません」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。