php如何处理表单和数据库字段不匹配

// 假设从表单接收到的数据
$formData = [
    'first_name' => $_POST['first_name'],
    'last_name' => $_POST['last_name'],
    'email' => $_POST['email'],
    // 更多字段...
];
 
// 数据库中期望的字段
$expectedFields = [
    'first_name',
    'last_name',
    'email_address', // 假设数据库字段名为 email_address
    // 更多字段...
];
 
// 过滤和验证数据
$cleanData = [];
foreach ($formData as $key => $value) {
    // 检查字段是否存在于数据库中
    if (in_array($key, $expectedFields)) {
        // 对字段进行过滤和转义,以避免SQL注入等安全问题
        $cleanData[$key] = filter_var($value, FILTER_SANITIZE_STRING);
    } else {
        // 未知字段的处理逻辑,例如记录日志或抛出异常
        // 处理字段不匹配的情况
    }
}
 
// 连接数据库...
// 使用过滤后的数据插入数据库
// 假设使用PDO准备语句
$db = new PDO('mysql:host=localhost;dbname=example_db', 'username', 'password');
$db->beginTransaction();
 
try {
    $stmt = $db->prepare("INSERT INTO users (first_name, last_name, email_address) VALUES (:first_name, :last_name, :email_address)");
    $stmt->bindParam(':first_name', $cleanData['first_name']);
    $stmt->bindParam(':last_name', $cleanData['last_name']);
    $stmt->bindParam(':email_address', $cleanData['email']);
    $stmt->execute();
 
    $db->commit();
} catch (Exception $e) {
    $db->rollBack();
    // 异常处理逻辑
}

 

posted @ 2024-12-23 08:56  充实地生活着  阅读(16)  评论(0)    收藏  举报