我使用一个相当长的HTML表单来更新与产品相关的大量细节 - 为简洁起见,我不会共享整个表单。然而,为了说明的目的这里有一个片段:如何根据HTML中定义的变量动态生成MYSQL UPDATE语句FORM
HTML表单
/> // other fields |
我的问题是发布形式update_ac.php的时候 - 我怎么能动态生成基于已完成的领域的MYSQL更新语句?
这里是我的表单操作页面的例子:
PHP表单操作
foreach ($_POST as $key => $value) {
$$key = $value;
}
$sql= mysql_query ("
UPDATE product SET
title='".$title."',
rating='".$rating."',
season='".$season."',
brand_id='".$brand_id."',
category='".$category."',
... etc ");
?>
我不希望要申报的每一个字段,它可能需要的UPDATE语句更新。我希望UPDATE语句只针对有关字段,因为从表单中发布已定义的PHP变量。
目前,我收到很多NOTICE: Undefined variable x,发布表单时已经有空字段。
我希望这是有道理的 - 有点啰嗦。
有什么建议吗?由于
UPDATE
从@ Styphon的答案继 - 我修改它稍微包括在查询结束时WHERE条件。
$query = "UPDATE product SET";
$comma = " ";
foreach($_POST as $key => $val) {
if(! empty($val)) {
$query .= $comma . $key . " = '" . mysql_real_escape_string(trim($val)) . "'";
$comma = ", ";
}
}
$product_id = $_POST['product_id'];
$query = $query . "WHERE product_id = '".$product_id."' ";
+0
查看'isset'也许> –
2014-09-05 10:29:04
+0
@Fluffeh - 这并不能解决我的问题,因为我不得不测试每个可能的变量对ISSET。我试图避免必须声明超过50个变量。 –
2014-09-05 10:55:58