MySQLi では、SQL インジェクションを防止し、パフォーマンスを最適化するためにパラメーターをバインドすることが望ましいです。ただし、一部の POST パラメータが空の場合は、それらを個別に処理する必要があります。
考えられるアプローチの 1 つは、call_user_func_array 関数を使用して、可変数の引数を指定して binding_param メソッドを呼び出すことです。これにより、クエリ文字列を動的に構築し、空でない値に対してのみパラメータをバインドすることができます。
例を次に示します。
<code class="php">$paramNames = array('myvar1', 'myvar2', /* ... */); $params = array(); foreach ($paramNames as $name) { if (isset($_POST[$name]) && $_POST[$name] != '') { $params[$name] = $_POST[$name]; } } if (count($params)) { $query = 'UPDATE mytable SET '; foreach ($params as $name => $val) { $query .= $name.'=?,'; } $query = substr($query, 0, -1); $query .= 'WHERE id = ?'; $stmt = $mysqli->prepare($query); $params = array_merge(array(str_repeat('s', count($params))), array_values($params)); call_user_func_array(array(&$stmt, 'bind_param'), $params); }</code>
このコードは、POST パラメータをループし、それらが空でない値であるかどうかを確認します。空ではなく設定され、配列に追加されます。次に、空ではないパラメータを使用してクエリ文字列を動的に構築し、call_user_func_array を使用して値をバインドします。
空の POST パラメータを個別に処理することで、MySQLi で変数入力バインディングを実現し、有効なデータのみが更新されるようにすることができます。データベースを構築し、不必要な更新を回避します。これは、さまざまな入力の組み合わせに対応できる多用途かつ柔軟なソリューションです。
以上が空の POST パラメータを使用して MySQLi で変数入力バインディングを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。