我有一个数组,想要按其元素更新整个列。
$arr = explode(',', $items);
foreach ($arr as $el){
$i = array_search($el, $arr) + 1;
$sql = "update bplus set uname = '" . $el . "' where id = " . $i;
$st = $db->query($sql);
}
这有效,但有没有办法避免多个update
语句?
答案 0 :(得分:-2)
我用Prepared语句解决这个问题的代码。它为 - > prepare()创建语句,为> bind_param()创建参数列表。 ......运算符使用数组(' var1' => 3,' var2' => 4)$ var1,$ var2。
$sql = 'UPDATE bplus SET ';
foreach($data as $k=>$v) {
if (gettype($v) == 'string') {
$params_type .= 's';
} else {
$params_type .= 'i';
}
$params[] = $v;
$sql .= $k . '=?,';
}
$sql = rtrim($sql, ',');
$sql .= ' WHERE id=?';
$params[] = $id;
$params_type .= 'i';
$stmt = $this->dbObject->prepare($sql);
if($stmt === false) {
echo 'Error: ' . $this->dbObject->errno . ' ' . $this->dbObject->error;
}
$stmt->bind_param($params_type, ...$params);
$result = $stmt->execute();