如何在没有多次更新的情况下通过数组更新整个列

时间:2018-04-17 12:30:36

标签: php mysql

我有一个数组,想要按其元素更新整个列。

$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语句?

1 个答案:

答案 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();
相关问题