假设我已经提供了所有这些:
我通常会这样做一个查询
$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);
}
但我无法弄清楚如何使这更通用,以便我可以输入我的列名,值和类型,并执行查询。
最好的方法是什么?我宁愿不必为此目的安装库。
答案 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);