MYSQL INSERT查询不使用空字段

时间:2016-01-13 07:59:39

标签: php mysql

我找到了有关此主题的一些信息(Trying to insert into mysql database ignoring blank fields)。但是我可以通过注射获得一些问题......

我已将NOT NULL添加到我的列中,但仍然插入了''的值。所以它没有给我我想要的结果。

无论如何我现在得到了这个:

if(isset($_POST['btnOpslaan']))
{
    include_once("dbConnect.php");

    $Date1 = strip_tags($_POST['Datum1']);
    $ProductDescription1 = strip_tags($_POST['ProductOmschrijving1']);
    $Amount1 = strip_tags($_POST['Aantal1']);
    $AmountCreated1 = strip_tags($_POST['AantalGemaakt1']);
    $Difference1 = strip_tags($_POST['Verschil1']);

    $Date2 = strip_tags($_POST['Datum2']);
    $ProductDescription2 = strip_tags($_POST['ProductOmschrijving2']);
    $Amount2 = strip_tags($_POST['Aantal2']);
    $AmountCreated2 = strip_tags($_POST['AantalGemaakt2']);
    $Difference2 = strip_tags($_POST['Verschil2']);

    $Query = "INSERT INTO productielijn1 (Datum, Productomschrijving, Aantal, AantalGemaakt, Verschil) VALUES(?, ?, ?, ?, ?), (?, ?, ?, ?, ?);

    if($stmt = $dbCon->prepare($Query)) 
    {       
       $stmt->bind_param('ssiiissiii', 
       $Date1, $ProductDescription1, $Amount1, $AmountCreated1, $Difference1,
       $Date2, $ProductDescription2, $Amount2, $AmountCreated2, $Difference2);

       if( $stmt->execute() === TRUE)
       {
           $Message = "Planning is aangemaakt!";
       }  
    }
}

我的网页用于创建计划。但有时你只想添加1个任务。因此$Date2$productDescription2和其他人可能是空的。但它仍然将行添加到我的mysql数据库中,仅使用values 0000-00-00''和0,0,0。

我可以通过IF语句检查是否设置了这些字段来轻松停止此操作。如果没有,它使用不同的查询。

但我有5行用于向数据库添加信息($ Date3,$ Date4和$ Date5 +每行所有其他信息)。

因此,当我用if语句解决这个问题时,如果声明我会变得很大......

有没有更简单的方法来解决这个问题?我可以告诉我的数据库在空的时候没有添加一行吗?

1 个答案:

答案 0 :(得分:1)

设计数据库,以便存储有关日期和产品说明的信息。使用类似的东西:

Schedule_id |基准| ProductOmschrijving | Aantal | AantalGemaakt |

1 | xyz | xyz | asd | sdadsa |

1 | abc | dsf | axc | asddsa |

使用数组发布数据,然后迭代数组并逐个插入