ホームページ > バックエンド開発 > PHPチュートリアル > mysqli_stmt::bind_param() が「パラメータ ... 参照であることが期待されていますが、指定された値」をスローするのはなぜですか?

mysqli_stmt::bind_param() が「パラメータ ... 参照であることが期待されていますが、指定された値」をスローするのはなぜですか?

Susan Sarandon
リリース: 2024-12-05 09:11:15
オリジナル
661 人が閲覧しました

Why Does mysqli_stmt::bind_param() Throw

mysqli binding_param() エラー: 参照の代わりに値を渡します

エラー「mysqli_stmt::bind_param() のパラメータ 3 は次のようになります」参照、指定された値」が発生するのは次の場合です。 mysqli_stmt::bind_param() には、それらの値への参照の配列ではなく、値の配列が渡されます。

PDO コード

提供される PDO コード内:

$params = array(1,"2","3","4");
ログイン後にコピー

$params 配列には、値への参照ではなく、値が含まれています。これを修正するには、& を使用して参照を作成します:

$params = array(1,&"2", &"3", &"4");
ログイン後にコピー

OOP コード

同様に、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 )

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート