微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更新时是否必须绑定数据库表中的所有值并且更新类似于插入?

如何解决更新时是否必须绑定数据库表中的所有值并且更新类似于插入?

我有一个这样的数据库表,想更新一些值

customerNumber (INT)
company (VARCHAR)
contactPerson (VARCHAR)
phoneNumber (VARCHAR)
username (VARCHAR)
password (VARCHAR)
email (VARCHAR)
create_at (TIMESTAMP)

这是我的更新功能

public function updateUser()
{
    //UPDATE datadump SET content=? WHERE id=?
    $query =  'UPDATE customer SET (company,contactPerson,phoneNumber,email) VALUES (?,?,?) WHERE customerNumver = ?';

    $paramType = 'ssssi';
    $ParamValue = array(
        $_POST["CustomerCompany"],$_POST["CustomercontactPerson"],$_POST["CustomerphoneNumber"],$_POST["CustomerEmail"],$_POST["customerNumber"]
    );
    $this->ds->insert($query,$paramType,$ParamValue);
}

我打电话给 insert 是因为我读到的内容应该作为更新。还是不行?

public function insert($query,$paramArray)
{
    $stmt = $this->conn->prepare($query);
    $this->bindQueryParams($stmt,$paramArray);

    $stmt->execute();
    $insertId = $stmt->insert_id;
    return $insertId;
}

我在日志中收到错误

在第 158 行的 /opt/lampp/htdocs/lib/DataSource.PHP 中抛出 [2021 年 2 月 23 日 10:38:57 欧洲/柏林] PHP 致命错误:未捕获 TypeError: call_user_func_array(): Argument #1 ($callback) must be a 有效回调,第一个数组成员不是有效的类名或对象 在 /opt/lampp/htdocs/lib/DataSource.PHP:158 堆栈跟踪中: #0 /opt/lampp/htdocs/lib/DataSource.PHP(158): call_user_func_array(Array,Array) #1 /opt/lampp/htdocs/lib/DataSource.PHP(118): DataSource->bindQueryParams(false,'ssssi',Array) #2 /opt/lampp/htdocs/Model/Customer.PHP(293): DataSource->insert('UPDATE customer...',Array) #3 /opt/lampp/htdocs/modify-address.PHP(28): Customer->updateUser() #4 {main} 在第 158 行的 /opt/lampp/htdocs/lib/DataSource.PHP 中抛出

这是 DataSource.PHP 中的第 158 行

public function bindQueryParams($stmt,$paramArray = array())
    {
        $paramValueReference[] = & $paramType;
        for ($i = 0; $i < count($paramArray); $i ++) {
            $paramValueReference[] = & $paramArray[$i];
        }
        call_user_func_array(array(
            $stmt,//this is line 158
            'bind_param'
        ),$paramValueReference);
    }

问题是我的 prepere 语句中没有数据库中的所有字段吗?我不想更新所有字段,我该怎么做或我可以这样做吗?

使用我的插入功能是否有效或者我应该如何修改它?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。