HTML多个输入字段



我正在为我的工作室创建一个新表单。我有一个工作表工作的工作表格,其中有4个字段要输入。这些被命名为work1,work2,work3和work4。它将这些并写入数据库表工作卡工作。这有两个字段,即JobCard和Work。我希望它仅在字段不为空时写入,因为也许并非所有3行都有文本。我的代码就是这样。

$a = array($work1, $work2, $work3, $work4); 
 foreach ($a as $b) 
 { 
 $sql6 = "INSERT INTO jobcardwork (Jobcard,Work)VALUES('2','$b')";
 $result6=mysql_query($sql6); 
 }

这有效,但即使盒子中没有任何内容也会写。结果是

id      jobcard   work
14      2    
15      2         linda
16      2         dan

您可以看到,它写成的第一行并输入了JobCard号码,但是框中没有文字,因此它离开了此空。请帮忙。谢谢。我知道Mysql很老,但我开始在Mysqli和PDO之前写下它。抱歉。

解决方案而不iffing:

$a = array($work1, $work2, $work3, $work4); 
foreach (array_filter($a) as $b) { 
   $sql6 = "INSERT INTO jobcardwork (Jobcard,Work)VALUES('2','$b')";
   $result6=mysql_query($sql6); 
}

请参阅http://lt1.php.net/array_filter

您的代码可能更优化和编写更安全,但这不是这个问题的主题,因此您的快速修复将看起来像这样:

$a = array($work1, $work2, $work3, $work4); 
foreach ($a as $b) { 
  if($b!="") {
     $sql6 = "INSERT INTO jobcardwork (Jobcard,Work)VALUES('2','$b')";
     $result6=mysql_query($sql6); 
  }
}

正确的方法是删除额外的空间,摆脱SQL攻击,然后检查文本是否仍然为空。

检查 mysql_real_escape_string TRIM 方法。最终代码看起来像这样。

 $result = array();
 foreach ($a as $b) 
 { 
    $b = mysql_real_escape_string(trim($b));
    if($b != '')
    {
        $sql = "INSERT INTO jobcardwork (Jobcard,Work)VALUES('2','$b')";
        $result[] = mysql_query($sql); 
    }
 }
 var_dump($result);

最新更新