ホームページ > バックエンド開発 > PHPチュートリアル > 「mysqli_stmt::bind_param() は参照であることが期待されますが、値が指定されました」エラーを解決するにはどうすればよいですか?

「mysqli_stmt::bind_param() は参照であることが期待されますが、値が指定されました」エラーを解決するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-01 14:04:10
オリジナル
988 人が閲覧しました

How to Resolve the

mysqli binding_param() パラメータ参照エラー: RefValues 関数による解決

「mysqli_stmt::bind_param() Expected」というエラーが表示されるのはなぜですか参考になる、価値があるGiven"?

エラー「mysqli_stmt::bind_param() Expected to be a Reference, value provided」は、変数または値を、参照を予期するbind_param() メソッドに値渡ししようとすると発生します。 。この問題は、call_user_func_array() を使用して、bind_param() に複数のパラメータを渡すときに発生する可能性があります。

問題の理解

bind_param() を含む MySQLi 関数には、変数を渡す必要があります。最適なパフォーマンスのための参考として。ただし、call_user_func_array() はパラメータを値として期待します。この期待の不一致によりエラーが発生します。

解決策: RefValues() 関数の使用

この問題を解決するには、refValues() 関数を使用します。値の配列を参照の配列に変換します。以下に例を示します。

function refValues($arr){
    if (strnatcmp(phpversion(),'5.3') >= 0) //Reference is required for PHP 5.3+
    {
        $refs = array();
        foreach($arr as $key => $value)
            $refs[$key] = &$arr[$key];
        return $refs;
    }
    return $arr;
}

$query = "INSERT INTO test (id,row1,row2,row3) VALUES (?,?,?,?)";
$params = array(1,"2","3","4");
$param_type = "isss";
$sql_stmt = mysqli_prepare ($mysqli, $query);
call_user_func_array('mysqli_stmt_bind_param', array_merge(array($sql_stmt, $param_type), refValues($params)));
mysqli_stmt_execute($sql_stmt);
ログイン後にコピー

代替解決策: スプレッド演算子の使用

PHP の新しいバージョンでは、スプレッド演算子 (...) を使用して変換できます。値の配列を参照の配列に変換します。以下に例を示します:

$query = "INSERT INTO test (id,row1,row2,row3) VALUES (?,?,?,?)";
$params = array(1,"2","3","4");
$param_type = "isss";
$sql_stmt = mysqli_prepare ($mysqli, $query);
call_user_func_array([$sql_stmt, 'bind_param'], [$param_type, ...$params]);
mysqli_stmt_execute($sql_stmt);
ログイン後にコピー

以上が「mysqli_stmt::bind_param() は参照であることが期待されますが、値が指定されました」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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