假设我有一个包含16到20个字段的表单,包括输入类型、文本和文本区域。
表单使用POST方法将字段提交到php页面,该页面使用$_POST vars更新数据库中的表。
我的问题是,我只想更新数据库中更改的值,而不是更新每个值,
这种优化应用程序的方法有多好?我还在另一个网站上看到了以下答案:
另外,上面的说法有多真实?
发布于 2014-01-19 07:18:08
当您使用$_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);发布于 2014-01-19 07:42:42
很简单,在提交表单之后,请执行以下操作:
if(isset($_POST['name'])) {
// Do the update
}
else {
// Don't do anything because it means there is no $_POST['name']
}这是基本的逻辑,我希望这就是你想要的。
https://stackoverflow.com/questions/21214174
复制相似问题