在 PHP 中连接数据库后,动态添加表内容(即执行 INSERT 操作)是非常常见的数据库操作,适用于将表单数据、API数据、脚本生成内容等写入数据库。


✅ 一、基本步骤概览

  1. 连接数据库(使用 PDO 或 MySQLi
  2. 构造 INSERT 语句(可以是固定结构,也可以是动态字段)
  3. 执行 SQL 写入数据
  4. 错误处理 & 返回插入结果

🚀 二、使用 PDO 动态插入数据(推荐)

示例:向 users 表插入数据

// 数据库配置
$dsn = 'mysql:host=localhost;dbname=test;charset=utf8mb4';
$user = 'root';
$pass = '';

try {
    $pdo = new PDO($dsn, $user, $pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 要插入的数据(动态构建)
    $data = [
        'username' => 'alice',
        'email' => 'alice@example.com',
        'created_at' => date('Y-m-d H:i:s')
    ];

    // 动态构建 SQL
    $fields = implode(', ', array_keys($data));
    $placeholders = ':' . implode(', :', array_keys($data));

    $sql = "INSERT INTO users ($fields) VALUES ($placeholders)";
    $stmt = $pdo->prepare($sql);

    // 执行插入
    $stmt->execute($data);

    echo "插入成功,ID:" . $pdo->lastInsertId();

} catch (PDOException $e) {
    echo "数据库错误:" . $e->getMessage();
}

🧠 三、动态字段插入的场景技巧

1. 用户表单 POST 数据

$data = $_POST;
// 注意过滤与验证安全性

2. 接收 JSON 数据并插入

$json = file_get_contents('php://input');
$data = json_decode($json, true);

🛡️ 四、安全注意事项(防 SQL 注入)

  • 永远使用 prepare + execute
  • 不要拼接 SQL 字符串直接插入变量
  • 验证字段是否存在于表结构中(白名单)

🧪 五、支持批量插入

$dataList = [
    ['username' => 'user1', 'email' => 'a@example.com'],
    ['username' => 'user2', 'email' => 'b@example.com'],
];

$sql = "INSERT INTO users (username, email) VALUES (?, ?)";
$stmt = $pdo->prepare($sql);

foreach ($dataList as $data) {
    $stmt->execute([$data['username'], $data['email']]);
}

🧩 六、使用 MySQLi 示例(可选)

$conn = new mysqli('localhost', 'root', '', 'test');
$sql = "INSERT INTO users (username, email) VALUES (?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ss", $username, $email);

$username = 'bob';
$email = 'bob@example.com';
$stmt->execute();

🏁 七、总结:动态插入的关键

步骤技巧建议
构建字段使用 array_keys() 和占位符构建
安全防注入使用 prepare + execute
可读性和维护性封装为函数或类方法
插入成功判断使用 rowCount() 或 lastInsertId()