替换(replace)
更新时间:2024年11月23日 18:35
浏览:638
替换一个对象或数组到数据库
public function replace(string $table, $object): int
参数:
- string $table - 表名
- array | object $object - 要替换的对象或数组,对象属性或数组键名需要和该表字段一致
返回值:
- int - 影响的行数,如果数据无变化,则返回0,失败时抛出异常
对象形式:
$obj = new stdClass();
$obj->id = 'f9acb7eb-f06a-11ec-8974-0242ac180065';
$obj->name = '如花';
$obj->age = 18;
$obj->sex = '女';
$effectRows = Be::getDb()->repalce('user', $obj);
将编译 SQL
REPLACE INTO `user` (`id`, `name`, `age`, `sex`) VALUES (?, ?, ?, ?);
再注入一行数据
['92aee504-04d6-11ed-b416-0242ac180065', '如花', '18', '女']
当写入的表中存在主键(本例中为 id),且主键值不存在时,执行插入,当主键值已存在,则更新记录,
也可以不指定主键
$obj = new stdClass();
$obj->name = '如花';
$obj->age = 18;
$obj->sex = '女';
$effectRows = Be::getDb()->repalce('user', $obj);
将编译 SQL
REPLACE INTO `user` (`name`, `age`, `sex`) VALUES (?, ?, ?);
再注入一行数据
['如花', '18', '女']
如果 name 字段设置了唯一主键,且存在 name = 如花 的记录时,则执行更新操作,否则将执行 插入操作。
数组形式:
$arr = [
'name' => '如花',
'age' => 18,
'sex' => '女'
];
$errectRows = Be::getDb()->repalce('user', $arr);