まず、POST、GET、またはREQUESTを介して届く文字列をエスケープすることを忘れないでください(理由がわからない場合は、SQLインジェクション攻撃について調べてください)。
このようなものが機能する可能性があります:
$semaphore = false;
$query = "UPDATE contacts SET ";
$fields = array('tel','fax','email');
foreach ($fields as $field) {
if (isset($_POST[$field]) and !empty($_POST[$field]) {
$var = mysql_real_escape_string($_POST[$field]);
$query .= uppercase($field) . " = '$var'";
$semaphore = true;
}
}
if ($semaphore) {
$query .= " WHERE Cust_Name = '$cst'";
mysql_query($query);
}
NB :SQLステートメントを作成するために$_POST配列を単純にループしないでください。対戦相手はPOSTフィールドを追加し、いたずらを引き起こす可能性があります。ユーザー入力配列をループすると、インジェクションベクトルが発生する可能性もあります。フィールド名をステートメントに追加する必要があります。つまり、フィールド名は潜在的なベクトルです。標準のインジェクション防止手法(プリペアドステートメントパラメーター、ドライバー提供の引用関数)は、識別子では機能しません。代わりに、フィールドのホワイトリストを使用して設定し、ホワイトリストをループするか、入力配列をホワイトリストに渡します。