【问题标题】:html multiple input fieldshtml多个输入字段
【发布时间】:2014-03-07 13:36:55
【问题描述】:

我正在为我的车间工作表程序创建一个新表格。我有一个需要输入 4 个字段的工作表工作表。它们被命名为 work1、work2、work3 和 work4。它接受这些并写入数据库表jobcardwork。这有两个字段,工作卡和工作。我希望它仅在字段不为空时才写入,因为可能并非所有 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

如您所见,它写在第一行并输入了工作卡号,但框中没有文本,所以它留空。请帮忙。谢谢。 p.s 我知道 mysql 很旧,但我在 mysqli 和 PDO 之前开始编写它。对不起。

【问题讨论】:

  • 您需要添加一些条件逻辑,例如。如果$b != "" 则插入,否则执行其他操作。虽然您可能应该先清理字符串,而不是直接插入 POST 数据。

标签: php html mysql input


【解决方案1】:

解决办法:

$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

【讨论】:

  • 嗨。我也尝试了您的解决方案,但它清除了我的表单并且不执行任何操作。我错过了什么吗?
  • 您和我的代码之间的唯一区别是array_filter() 调用将过滤掉空字符串、空值和错误值。您可以使用var_dump(array_filter($a))var_dump($sql6) 调试这些值以获得更多见解。
  • 感谢本网站的所有帮助。你们过去都帮助过很多次,我开始更多地了解这个编程。我是一名 CNC 机械师,所以这对我来说很陌生。再次感谢!!!!
【解决方案2】:

您的代码可以更优化,编写更安全,但这不是本问题的主题,因此您的快速修复将如下所示:

$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); 
  }
}

【讨论】:

  • 您好,感谢您的帮助。我试过这个,但它清除了我的表格并且没有做任何事情。我错过了什么吗?
【解决方案3】:

正确的做法是去掉多余的空格,摆脱sql攻击,然后检查文本是否仍然为空。

检查 mysql_real_escape_stringtrim 方法。最终代码将如下所示。

 $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);

【讨论】:

    猜你喜欢
    • 2015-09-07
    • 1970-01-01
    • 2015-12-06
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多