2016-04-27 192 views
1

所以我试图让用户更新此表,但如果该字段留空,我想数据被单独留下,而不是将其更改为空白字段或空,任何想法?需要保持空白字段与表

<? 
    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

一种方式做到这一点:

$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'"; 
} 

注意,这两个变量传递到SQL should be escaped

+0

这似乎是专业的事情!然而,这是作业,我可以使用它。任何方式可以用更简单的代码来完成? –

+0

@FagnerSchuindtCaetano,你可以在一行中收集它们:'foreach(['Name','Genre']为$ f)isset($ {$ f})和$ set [] =“$ f ='”。 $ {$ f}。 “'”;'。但这是一个非常糟糕的代码,因为它充满了假设。代码应该易于阅读,但不一定简短。 –