1

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

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

我通常会做这样的查询

$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);
}

但我不知道如何使它更通用,以便我可以输入我的列名、值和类型,并执行查询。

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

4

1 回答 1

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);
于 2012-06-15T13:59:16.533 回答