【发布时间】:2015-06-16 14:47:43
【问题描述】:
我目前正在尝试构建一个小的通用函数来进行插入。我的目标是传递表格、列、值和类型来填充插入。
我唯一的问题是声明:
$stmt -> bind_param($types, $var1, $var2 ...);
我基本上需要的是这样的:
$stmt -> bind_param($types, $array);
这是我到现在得到的:
function insert($into, $columns, $values, $types) {
global $connection;
// Check Correct Length
if(count($columns) != count($values) ||
count($columns) != count($types)) {
return false;
}
$count = count($columns);
$column_string = "";
$value_string = "";
$value_types = "";
for($i = 0; $i < $count; $i++) {
$column_string .= $columns[$i];
$value_types .= $types[$i];
$value_string .= '?';
if($i + 1 < $count) {
$column_string .= ',';
$value_string .= ',';
}
}
$sql = "INSERT INTO $into ($column_string) VALUES ($value_string)";
// Execute Statement
if($stmt = $connection -> prepare($sql)) {
// $stmt -> bind_param("sss", $transaction, $email, $status);
// What to do here?
$stmt -> execute();
$stmt -> close();
}
SQL 语句看起来已经很好了。类型也准备好了 - 我只需要一种动态绑定参数的方法......
【问题讨论】:
-
你不能。
bindparam是 1:1 映射。您可以使用 execute() 中的数组选项一次性传入所有内容。$stmt->execute(array(':foo' => 'bar', ....)); -
你能给我更多的信息吗?这样做有负面影响吗?
-
好吧,这只有助于执行查询。如果你想绑定结果值,你会遇到很多 bindparam() 调用。
标签: php mysqli prepared-statement