如何实现mysql查询执行的sql记录

一、流程图

erDiagram
    查询记录表 {
        int 记录ID
        varchar(255) sql语句
        datetime 执行时间
        varchar(255) 执行结果
        int 执行耗时
    }

二、步骤

步骤 操作
1 创建一个表用来记录mysql查询执行的sql语句、执行时间、执行结果和执行耗时
2 在代码中插入记录sql执行的语句
3 在代码中查询并展示执行的记录

三、实现细节

步骤1:创建记录表

```sql
CREATE TABLE `query_records` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `sql_statement` text NOT NULL,
  `execute_time` datetime NOT NULL,
  `execute_result` varchar(255) NOT NULL,
  `execute_duration` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

### 步骤2:插入sql执行记录

```markdown
```php
$sql = "SELECT * FROM users";
// 记录执行开始时间
$start_time = microtime(true);

// 将sql语句插入query_records表
$insert_sql = "INSERT INTO query_records (sql_statement, execute_time) VALUES ('$sql', NOW())";
$connection->query($insert_sql);

// 执行sql
$result = $connection->query($sql);

// 记录执行结束时间
$end_time = microtime(true);
$duration = $end_time - $start_time;

// 更新执行结果和执行时间
$update_sql = "UPDATE query_records SET execute_result = 'success', execute_duration = $duration WHERE sql_statement = '$sql'";
$connection->query($update_sql);

### 步骤3:查询执行记录

```markdown
```php
// 查询query_records表中的记录并展示
$select_sql = "SELECT * FROM query_records";
$result = $connection->query($select_sql);

while ($row = $result->fetch_assoc()) {
    echo "SQL语句:" . $row['sql_statement'] . "<br>";
    echo "执行时间:" . $row['execute_time'] . "<br>";
    echo "执行结果:" . $row['execute_result'] . "<br>";
    echo "执行耗时:" . $row['execute_duration'] . "秒<br>";
}

## 四、总结

通过上述步骤,我们可以记录并查询mysql查询执行的sql语句、执行时间、执行结果和执行耗时。这样可以帮助我们更好地了解每次查询的情况,及时发现问题并进行优化。希望以上内容可以帮助你快速实现这一功能。祝学习进步!