我使用一個相當長的HTML表單來更新與產品相關的大量細節 - 爲簡潔起見,我不會共享整個表單。然而,爲了說明的目的這裏有一個片段:如何根據HTML中定義的變量動態生成MYSQL UPDATE語句FORM
HTML表單
<form name="form1" method="post" action="update_ac.php">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td>
<input name="season" type="text" class="button_select" id="season" value="<?=$rows['season']; ?>" size="10" />
<input name="restock" type="checkbox" id="restock" value="on" <?php if($rows['restock']=='on') { echo 'checked="checked"'; } ?>/>
// other fields
</td>
</tr>
</table>
</form>
我的問題是發佈形式update_ac.php
的時候 - 我怎麼能動態生成基於已完成的領域的MYSQL更新語句?
這裏是我的表單操作頁面的例子:
PHP表單操作
<?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."' ";
查看'isset'也許> – Fluffeh 2014-09-05 10:29:04
@Fluffeh - 這並不能解決我的問題,因爲我不得不測試每個可能的變量對ISSET。我試圖避免必須聲明超過50個變量。 – aphextwix 2014-09-05 10:55:58