ホームページ > バックエンド開発 > PHPチュートリアル > mysqliのbind_param()の「参照であることが期待されます」エラーを解決する方法は?

mysqliのbind_param()の「参照であることが期待されます」エラーを解決する方法は?

Susan Sarandon
リリース: 2024-12-13 10:57:15
オリジナル
170 人が閲覧しました

How to Solve the

mysqli binding_param() の「参照であることが期待される」エラーの処理

エラー メッセージ「mysqli_stmt::bind_param() へのパラメーター 3」 ) 参照であることが期待されていますが、値が指定されています」という問題は、準備されたステートメントに値をバインドするときに発生します。この問題を解決するには、指定する値は、値自体ではなく実際の変数への参照である必要があります。

提供されたコード スニペットでは、$params 配列に参照ではない値が含まれています。値を正しくバインドするには、次のアプローチを使用できます。

$query = "INSERT INTO test (id,row1,row2,row3) VALUES (?,?,?,?)";
$param_type = "isss";

// PHP 7+
$sql_stmt = mysqli_prepare($mysqli, $query);
mysqli_stmt_bind_param($sql_stmt, $param_type, ...$params);

// PHP 5.6 - 7.0
$sql_stmt = mysqli_prepare($mysqli, $query);
$arr = array($sql_stmt, $param_type);
foreach ($params as $param) {
    $arr[] = &$param;
}
call_user_func_array('mysqli_stmt_bind_param', $arr);

mysqli_stmt_execute($sql_stmt);
ログイン後にコピー

参照の使用

PHP 5.3 以前では、値のバインドに参照は必要ありません。準備されたステートメントに。ただし、PHP 5.4 以降では、参照が必須になります。この変更の理由は、不要な変数のコピーと潜在的なメモリ リークを防ぐためです。

参照を使用すると、バインドされた値が直接変更されるため、バインド プロセスがより効率的になり、余分な変数の割り当てが不要になります。

>

結論

参照ではない値を指定して mysqli binding_param() を使用する場合は、次のことを覚えておいてください。値を参照として渡すか、別のアプローチを使用して値を適切にバインドする必要があります。これにより、SQL クエリを効率的かつエラーなく実行できるようになります。

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

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