将bind_param()与可变数量的输入变量一起使用
在MySQL准备好的语句中,bind_param()用于将变量绑定到SQL 查询中的占位符。但是,当处理动态数量的输入变量(例如表单数据)时,处理空值或缺失值可能具有挑战性。
问题:
通常, bind_param() 需要特定数量的输入变量,空值会导致错误。问题出现了:当某些输入变量可能为空时,如何有效地管理这种情况?
解决方案:
一种创新方法是利用 call_user_func_array() 函数使用可变数量的参数调用bind_param()。这是一个分步解决方案:
-
创建参数名称数组:定义一个数组来保存您要更新的所有表单字段的名称。
-
初始化参数的空数组:创建一个新数组来存储非空字段值。
-
迭代参数名称:循环遍历参数名称数组。对于每个名称,检查 $_POST 中相应的值是否已设置且不为空。如果是,则将参数名称和值添加到参数数组中。
-
构建查询字符串:构建 SQL 查询字符串,为非空参数动态添加占位符 (?)。
-
准备语句:使用 $mysqli->prepare() 准备修改后的查询字符串。
-
创建数据类型数组:确定参数的数据类型,并创建一个表示类型的字符数组(例如,“ss...”表示两个字符串)。
-
合并类型和值数组:合并使用非空参数值数组键入 array 以创建单个数组。
-
使用 call_user_func_array 调用 bind_param(): 将合并的数组作为参数传递给 call_user_func_array() 以有效调用 bind_param () 具有可变数量的参数。
以上是如何使用动态数量的输入变量将变量绑定到 MySQL 准备语句?的详细内容。更多信息请关注PHP中文网其他相关文章!