我想写一个方法来向数据库添加记录。
我的方法:
final public function newData($sql, $placeholder, $array) {
$stmt = $this->db->prepare($sql);
$stmt->bind_param($placeholder, implode(",", $array));
return $stmt->execute();
}
..................
// Code---Example
$sql = "INSERT INTO table (name, data) VALUES (?,?)";
$placeholder = "ss";
final public function newData($sql, $placeholder, [$array]) {
$stmt = $this->db->prepare($sql);
$stmt->bind_param($placeholder, implode(",", $array));
return $stmt->execute();
}
我的问题是如果我想用这种方法保存几个值。我收到警告
警告:mysqli_stmt :: bind_param():类型定义字符串中的元素数与##
中的绑定变量数不匹配
我做错了什么?
答案 0 :(得分:1)
您不能以这种方式使用$stmt->bind_param()
。你需要做参数解包,因为bind_param需要类型,然后每个值作为参数。
final public function newData($sql, $placeholder, $array) {
$stmt = $this->db->prepare($sql);
$stmt->bind_param($placeholder, ...$array);
return $stmt->execute();
}
然后使用:
$sql = "INSERT INTO table (name, data) VALUES (?,?)";
$result = $theDbClass->newData($sql, 'ss', ['foo', 'bar']);