开发文档 v2.x

快速更新(quickUpdate)

更新时间:2022年8月27日 02:27 浏览:87

快速更新一个对象或数组到数据库

public function quickUpdate(string $table, $object, $primaryKey = null): int

参数:

  • string $table - 表名
  • array | object $object - 要插入数据库的对象或数组,对象属性或数组锓名需要和该表字段一致
  • null | string | array $primaryKey 主键或指定键名更新,未指定时自动取表的主键

返回值:

  • int - 更新的行数,如果数据无变化,则返回0,更新失败时抛出异常

 

快速更新方法没有预先编译 SQL 横板,而是直接生成 SQL,但更新的数据会通过 PDO 提供的 quote 方法处理 防止注入。

因为少了预编译 SQL 的开销,快速更新方法执行速度更快,特别是批量更新时。

 

对象形式:

$obj = new \stdClass();
$obj->id = '92aee504-04d6-11ed-b416-0242ac180065';
$obj->name = '如花';
$obj->age = 18;
$obj->sex = '女';

$effectRows = Be::getDb()->quickUpdate('user', $obj);
// 指定主键
// $effectRows = Be::getDb()->quickUpdate('user', $obj, 'id');

将执行 SQL

UPDATE `user` SET `name`='如花', `age`=18, `sex`='女' WHERE `id`='92aee504-04d6-11ed-b416-0242ac180065';

 

数组形式:

$arr = [
    'id' => '92aee504-04d6-11ed-b416-0242ac180065',
    'name' => '如花',
    'age' => 18,
    'sex' => '女'
];

$db = Be::getDb();
$effectRows = $db->quickUpdate('user', $arr);

 

按非主键更新

$obj = new \stdClass();
$obj->name = '如花';
$obj->age = 18;
$obj->sex = '女';

$effectRows = Be::getDb()->quickUpdate('user', $obj, ['name', 'sex']);

将执行 SQL

UPDATE `user` SET `age`=18 WHERE `name`='如花' AND `sex`='女'

 

 

导航