在 MySQLi 中,希望通过绑定参数来防止 SQL 注入并优化性能。但是,如果某些 POST 参数为空,则需要单独处理它们。
一种可能的方法是使用 call_user_func_array 函数以可变数量的参数调用 bind_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 中实现变量输入绑定,确保只更新有效数据数据库并避免不必要的更新。它是一种多功能且灵活的解决方案,可以适应各种输入组合。
以上是如何在MySQLi中实现空POST参数的变量输入绑定?的详细内容。更多信息请关注PHP中文网其他相关文章!