StartMVC开发手册

可以快速上手的开发文档

手册目录

插入数据

数据插入insert(array $data,$returnSql=false,$type='INSERT')

insert方法可以插入单条数据,也可以插入多条数据, 成功返回为最后一条主键id号,失败返回空$data要插入的数据,$returnSql不操作数据加直接返回sql语句,$type插入类型有INSERT, INSERT IGNORE, INSERT OR IGNORE, REPLACE, DUPLICATE

使用示例

1. 标准插入(默认)

// 单条插入
$data = ['name' => '张三', 'email' => 'zhangsan@example.com'];
$result = Db::table('users')->insert($data);

// 批量插入
$multiData = [
    ['name' => '张三', 'email' => 'zhangsan@example.com'],
    ['name' => '李四', 'email' => 'lisi@example.com']
];
$result = Db::table('users')->insert($multiData);

// 获取新插入数据的ID
$newId = Db::insertId();

2. 忽略错误插入(INSERT IGNORE)

当插入的数据违反唯一约束时,不报错而是跳过

// 使用 INSERT IGNORE
$data = ['id' => 1, 'name' => '张三', 'email' => 'zhangsan@example.com'];
$result = Db::table('users')->insert($data, false, 'INSERT IGNORE');

// 简写形式也可以
$result = Db::table('users')->insert($data, false, 'IGNORE');

3. 替换插入(REPLACE)

如果存在相同主键或唯一索引的记录,则先删除再插入

// 使用 REPLACE INTO
$data = ['id' => 1, 'name' => '张三', 'email' => 'new@example.com'];
$result = Db::table('users')->insert($data, false, 'REPLACE');

4. 插入重复时更新(ON DUPLICATE KEY UPDATE)

当主键或唯一索引冲突时,更新记录而不是报错

// 使用 ON DUPLICATE KEY UPDATE
$data = ['id' => 1, 'name' => '张三', 'email' => 'update@example.com', 'login_count' => 5];
$result = Db::table('users')->insert($data, false, 'DUPLICATE');

返回SQL而不执行

所有类型都支持返回SQL而不执行:

// 获取 REPLACE INTO 的SQL语句
$sql = Db::table('users')->insert($data, true, 'REPLACE');

// 或者使用链式调用的getSql()方法
$sql = Db::table('users')->getSql()->insert($data, false, 'REPLACE');

注意事项

  1. 参数顺序:insert($data, $returnSql, $type) - 第一个参数为一维数组或二维数组,第二个参数是控制是否返回SQL,第三个参数是插入类型
  2. 插入类型参数不区分大小写,内部会转换为大写
  3. 使用 DUPLICATE 类型时,会自动为所有字段添加 column = VALUES(column) 更新语句