mysqli binding_param() エラー: 参照の代わりに値を渡します
エラー「mysqli_stmt::bind_param() のパラメータ 3 は次のようになります」参照、指定された値」が発生するのは次の場合です。 mysqli_stmt::bind_param() には、それらの値への参照の配列ではなく、値の配列が渡されます。
提供される PDO コード内:
$params = array(1,"2","3","4");
$params 配列には、値への参照ではなく、値が含まれています。これを修正するには、& を使用して参照を作成します:
$params = array(1,&"2", &"3", &"4");
同様に、OOP コード内:
array_unshift($params, $param_type);
この行は $param_type 文字列の先頭に追加されます$params 配列の先頭に追加されますが、パラメーター値への参照は作成されません。参照を作成するには、& 文字を使用します。
array_unshift($params, $param_type); foreach ($params as $key => $value) { $params[$key] =& $value; }
PHP バージョン 5.6 以降では、スプレッド演算子 (... ) 手動で参照を作成せずに $params 配列を個別の引数として渡すには:
mysqli_stmt_bind_param($sql_stmt, $param_type, ...$params); $insert_stmt->bind_param($param_type, ...$params);
参照を渡すことによってまたは、スプレッド演算子を使用すると、mysqli_stmt::bind_param() がパラメーター値への参照の配列を確実に受け取り、エラーを解決できます。
以上がmysqli_stmt::bind_param() が「パラメータ ... 参照であることが期待されていますが、指定された値」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。