php - 更新时是否必须绑定数据库表中的所有值,并且更新类似于插入?
问题描述
我有一个这样的数据库表,想更新一些值
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, $paramType, $paramArray)
{
$stmt = $this->conn->prepare($query);
$this->bindQueryParams($stmt, $paramType, $paramArray);
$stmt->execute();
$insertId = $stmt->insert_id;
return $insertId;
}
我在日志中收到错误
在 /opt/lampp/htdocs/lib/DataSource.php 第 158 行 [23-Feb-2021 10:38:57 Europe/Berlin] PHP 致命错误:未捕获的 TypeError:call_user_func_array():参数 #1 ($callback)必须是有效的回调,第一个数组成员不是 /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...', 'ssssi', 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, $paramType, $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 语句中没有数据库中的所有字段吗?我不想更新所有字段,我该怎么做,或者我可以这样做吗?
使用我的插入功能是否有效或者我应该如何修改它?
解决方案
推荐阅读
- isabelle - 如何在 Isabelle/HOL 中使用“THE”语法?
- c# - 使 AuthorizationHandler 接受两种资源而不是一种
- python - 将与一个数据帧中的标签对应的值乘以另一个数据帧中具有相同标签的所有值
- typescript - 将 typescript moment.Moment 类型重新映射到我的扩展类型
- sql - 用户管理+授权
- python - 从字符串数组初始化 pydantic Literal
- tensorflow - 如何在 iPython 中“试用”Tensorflow 函数并查看答案?
- css - 谷歌搜索框的自定义 CSS
- excel - MS Excel:每项费用过去 12 个月的移动平均值(以当前日期为准)
- ruby-on-rails - 表单显示在新路线上,并在编辑路线时出错 [Rails]