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