首页 文章

仅更新用户在表单中更改的字段

提问于
浏览
2

假设我有一个包含16到20个字段的表单,包括输入类型文本和textareas .

表单使用POST方法将字段提交到php页面,该页面使用$ _POST vars更新数据库中的表 .

我的问题是我想仅在数据库中更新已更改的值,而不是更新每个值,

这种优化应用程序的方法有多好? ,我也在另一个网站上读到以下答案:

mySQL会自动检测到您正在使用已包含的相同值更新字段,并且实际上并未更新该字段 . 不确定这是否与其他数据库相同,可以与php一起使用 .

还有,上述说法有多正确?

2 回答

  • -1

    当您使用 $_POST 变量来构造SQL查询时,请确保在 $_POST 中未设置't including any column names or values that aren' . 如果SQL UPDATE 语句没有形成为期望的语句,则DB将不会尝试更新这些列 . 最好的方法可能是使用 foreach 循环:

    // Init SQL query
    $statement = "UPDATE tableName SET ";
    $params = array();
    // Iterate $_POST variables
    foreach ($_POST as $key=>$value) {
        // Append a new SET key/value pair
        $statement .= "$key = :$key, ";
        // You're using prepared statements, right?
        $params[$key] = $value;
    }
    
    // Cut off last comma and append WHERE clause
    $statement = substr($statement,0,-2)." WHERE id = :id";
    // Store id for prepared statement
    $params['id'] = $id;
    // Prepare the query
    $pdo->prepare($statement);
    // Execute with parameters
    $result = $pdo->execute($params);
    
  • 0

    提交表单后非常简单,请执行以下操作:

    if(isset($_POST['name'])) {
    // Do the update
    }
    else {
    // Don't do anything because it means there is no $_POST['name']
    }
    

    这是基本的逻辑,我希望这是你正在寻找的 .

相关问题