# mysql.exec

## 功能

执行不需要返回结果集的 SQL。普通绑定执行一次；binds 批量配置会按 batch/workers 执行。

## 语法

```bt
mysql(dsn).query(sql).exec()
```

## 参数

无参数。

## 返回值

| 类型 | 说明 |
| ------ | ------ |
| Object | 返回 SQL 执行统计对象。 |

## 执行结果字段

| 字段 | 类型 | 必定存在 | 说明 |
| ------ | ------ | ------ | ------ |
| total | Int | 是 | 本次执行处理的绑定行数。普通 `bind()` 执行时为 `1`；批量 `binds()` 执行时为绑定数组行数；无绑定行时为 `0`。 |
| rows_affected | Int | 是 | 数据库报告的受影响行数。批量执行时为各批次累加值。 |
| last_insert_id | Int | 是 | 数据库报告的最后插入 ID。批量执行时取各批次返回值中的最大值。 |
| batch_count | Int | 是 | 实际拆分执行的批次数。普通执行通常为 `1`；无绑定行时为 `0`。 |
| batch_size | Int | 是 | 当前查询构建器配置的批大小。未调用 `batch()` 时使用默认值。 |
| workers | Int | 是 | 当前查询构建器配置并规范化后的并发工作数。 |

## 示例

```bt
db = mysql('mysql://user:pass@127.0.0.1/test')
ret = db.query('insert into user(name) values (?)').bind('BT').exec()
result = ret.rows_affected

// 输出示例：1
echo(result)
```

## 注意事项

- 简单 INSERT ... VALUES (?, ?) 会自动合并为多值插入。
- UPDATE、DELETE 不会自动拼接 SQL，会按批次逐条执行。
