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

Susan Sarandon
リリース: 2024-11-07 05:21:03
オリジナル
207 人が閲覧しました

How to Fix

PDO を使用した Out パラメーターを使用したスト​​アド プロシージャの呼び出し: 解決されたバグ

PDO マニュアルに従っているにもかかわらず、「OUT または INOUT 引数」が発生する場合があります。出力パラメータを指定してストアド プロシージャを呼び出すと、「...は変数ではありません」というエラーが発生します。これは、PHP および MySQL の以前のバージョンのバグが原因である可能性があります。

この問題を解決するには、次の回避策を実装してください。

  1. ストアド プロシージャに を追加します。出力パラメーターの SELECT ステートメント。例:
DELIMITER //  
CREATE PROCEDURE `proc_OUT` (OUT var1 VARCHAR(100))  
BEGIN  
    SET var1 = 'This is a test';  
    SELECT var1;  -- Select added to retrieve the output parameter
END //  
ログイン後にコピー
  1. PHP コードでは、通常の PDO execute() メソッドを使用して、出力パラメーターをバインドせずにストアド プロシージャを呼び出します。
$stmt = $db->prepare("CALL proc_OUT(?)");
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
$stmt->execute();
ログイン後にコピー
  1. ストアド プロシージャを実行した後、別の query() 呼び出しを使用して出力パラメータを取得します:
$result = $db->query("SELECT var1 FROM proc_OUT");
foreach ($result as $row) {
    echo $row['var1'];
}
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!