我正在为我的工作室创建一个新表单。我有一个工作表工作的工作表格,其中有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);