如何在PHP中执行包含未知数量参数的插入查询?

时间:2012-06-15 13:55:23

标签: php sql mysqli

假设我已经提供了所有这些:

  • 表格的名称
  • 包含表格中列名称的数组
  • 包含我想要插入表中的值的相应数组,以及这些值的类型。

我通常会这样做一个查询

$stmt = mysqli_stmt_init($mysqli);
if (mysqli_stmt_prepare($stmt, 'INSERT INTO `Table` (columns) VALUES (values) ')) {
  mysqli_stmt_bind_param($stmt, /* types */, /* values */);
  mysqli_stmt_execute($stmt);
  mysqli_stmt_close($stmt);
}

但我无法弄清楚如何使这更通用,以便我可以输入我的列名,值和类型,并执行查询。

最好的方法是什么?我宁愿不必为此目的安装库。

1 个答案:

答案 0 :(得分:5)

对于列名称,你可以只需要implode列数组,sprintf就可以查询。

对于类型,您还可以implode将它们分为字符串并将其反馈到mysqli_stmt_bind_param

对于您对某些棘手的操作(使用call_user_func_array)所做的值:

$args = array(); // to be put into call_user_func_array

$args[] =& $stmt; // because the statement HAS TO be by reference.
$args[] = implode("", $types);

foreach($values as $value){
    $args[] = $value;
}

call_user_func_array("mysqli_stmt_bind_param", $args);