2016-04-27 8 views
1

私はこのテーブルを更新するようにしていますが、フィールドを空白のままにしておくと、データを残しておきたい場合は、空白のフィールドまたはnull、任意のアイデア?テーブル上のデータで空白のフィールドを維持する必要がある

<? 
    elseif ($Code == "U") 
    { 
    $sql = "UPDATE movieDATA SET Name = '$Name', Genre = '$Genre', Starring = '$Starring', Year = '$Year', BoxOffice = '$BoxOffice' where IDNO = '$idno'"; 
    $result= mysqli_query($link,$sql) or die(mysqli_error($link)); 
    $showresult = mysqli_query($link,"SELECT * from movieDATA") or die("Invalid query: " . mysqli_error($link)); 
    while ($row = mysqli_fetch_array($showresult)) 
     { 
     echo ("<br> ID = ". $row["IDNO"] . "<br> NAME = " . $row["Name"] . "<br>"); 
     echo("Genre = " . $row["Genre"] . "<br> Starring = " . $row["Starring"] . "<br>"); 
     echo("Year = " . $row["Year"] . "<br> Box Office = " . $row["BoxOffice"] . "<br>"); 
     } 
    } 
    ?> 
+0

質問をしないでください。記述したり、欲望の出力を与えてください。 – RJParikh

+0

私はテーブルを更新しています。ユーザーがフィールドを空白のままにしておくと、コードがテーブルを空白のフィールドに更新します。テーブルにはデータが保持され、空白で上書きされません。 –

答えて

1
$fields = array(); // Take a blank array of fields and values. 
$Name = trim($Name); // Trim the variable, user may add only spaces 
$Genre = trim($Genre); // Do this for all variables. 
$Starring = trim($Starring); 
$Year = trim($Year); 
$BoxOffice = trim($BoxOffice); 
if (! empty($Name)) { // If user has filled the field, append to array. 
$fields[] = "Name = '$Name'"; 
} 
if (! empty($Genre)) { 
$fields[] = "Name = '$Genre'"; 
} 
if (! empty($Starring)) { 
$fields[] = "Name = '$Starring'"; 
} 
if (! empty($Year)) { 
$fields[] = "Name = '$Year'"; 
} 
if (! empty($BoxOffice)) { 
$fields[] = "Name = '$BoxOffice'"; 
} 
if (! empty($fields)) { // If the array is not empty, go for Query. 
$sql = "UPDATE movieDATA SET "; // If user has not added any field value, 
$sql .= implode(', ', $fields); // no SQL Query will be fired. 
$sql .= " WHERE IDNO = '$idno'"; 
} 

をあなたの要件:

いるユーザーのフィールドを更新しません空白のままになっています。

ソリューション:

  • すべてのフィールドが一杯になった場合の条件をチェックする場合は追加します。
+0

入手しました。ありがとうございました! –

1

これを行う1つの方法:変数がSQL should be escapedに合格したことを

$q_set = []; 

if (!empty($Name)) { 
    $q_set []= "Name = '$Name'"; 
} 
if (!empty($Genre)) { 
    $q_set []= "Genre = '$Genre'"; 
} 
/* ... */ 
if (!empty($q_set)) { 
    $sql = "UPDATE movieDATA SET " . implode(',', $q_set) 
    . " WHERE IDNO = '$idno'"; 
} 

注意、

+0

これはプロのようなものです!しかしこれは宿題であり、私はそれを使うことができます。どのようにしても簡単なコードでこれを行うことができますか? –

+0

@FagnerSchuindtCaetanoでは、 'foreach(['Name'、 'Genre']は$ f)isset($ {$ f})と$ set [] =" $ f = '"のように1行にまとめることができます。 $ {$ f}。 "'"; '。しかし、それは仮定がいっぱいだから本当に悪いコードだ。コードは読みやすいものでなければならないが、必ずしも簡潔である必要はない。 –

関連する問題