快速替换(quickReplace)
更新时间:2024年12月6日 18:20
浏览:728
快速替换一个对象或数组到数据库
public function quickReplace(string $table, $object): int;
参数:
- string $table - 表名
- array | object $object - 要替换的对象或数组,对象属性或数组锓名需要和该表字段一致
返回值:
- int - 影响的行数,如果数据无变化,则返回0,失败时抛出异常
快速替换方法没有预先编译 SQL 横板,而是直接生成 SQL,但数据会通过 PDO 提供的 quote 方法处理 防止注入。
因为少了预编译 SQL 的开销,快速替换方法执行速度更快,特别是批量替换时。
对象形式:
$obj = new stdClass();
$obj->name = '如花';
$obj->age = 18;
$obj->sex = '女';
$id = Be::getDb()->quickReplace('user', $obj);
将执行 SQL
REPLACE INTO `user` (`name`, `age`, `sex`) VALUES ('如花', '18', '女');
如果 name 字段设置了唯一主键,且存在 name = 如花 的记录时,则执行更新操作,否则将执行 插入操作。
数组格式:
$arr = [
'name' => '如花',
'age' => 18,
'sex' => '女'
];
$id = Be::getDb()->quickReplace('user', $arr);