我正在为我的工作室创建一个新的工作表程序表单。我有一个工作表工作需要表格,有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之前编写它。遗憾。
答案 0 :(得分:0)
您的代码可以更加优化并且编写得更安全,但这不是此问题的主题,因此您的快速修复将如下所示:
$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);
}
}
答案 1 :(得分:0)
正确的方法是删除多余的空格,摆脱SQL攻击,然后检查文本是否仍为空。
检查 mysql_real_escape_string 和修剪方法。最终代码将如下所示。
$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);
答案 2 :(得分:0)
没有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);
}