假设我有一个包含16到20个字段的表单,包括输入类型文本和textareas。
表单使用POST方法将字段提交到更新表中的表的php页面 带有$ _POST vars的数据库。
我的问题是我想仅在数据库中更新已更改的值,而不是更新每个值,
这种优化应用程序的方法有多好? ,我也在另一个网站上看到了以下答案:
- mySQL会自动检测到您正在使用已包含的相同值更新字段,并且实际上并未更新该字段 领域。不确定它是否与其他数据库相同 与php一起使用。
同样,上述陈述的真实情况如何?
答案 0 :(得分:0)
使用$_POST
变量构建SQL查询时,只需确保未包含$_POST
中未设置的任何列名或值。如果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);
答案 1 :(得分:-1)
非常简单,提交表格后,请执行:
if(isset($_POST['name'])) {
// Do the update
}
else {
// Don't do anything because it means there is no $_POST['name']
}
这是基本逻辑,我希望这就是你要找的东西。