使用每个循环插入数据并忽略没有数据的文本字段

时间:2014-03-05 08:02:56

标签: php mysql sql

我有两个插入单个表的文本字段

HTML

<table width="200" border="0">
    <tr>
        <td><label for="textfield">Van Number:</label></td>
        <td><input type="text" name="van[]" id="textfield" /></td>
    </tr>
    <tr>
        <td><label for="textfield2">Van Number:</label></td>
        <td><input type="text" name="van[]" id="textfield2" /></td>
    </tr>
</table>

这是我对mysql的插入函数

MYSQL PHP     

    foreach ($_POST['van'] as $van) {
        mysql_select_db($database_connect, $connect);
        $sql = ("INSERT INTO tbl_van (van_number, tbl_delivery_details_id_delivery_details)     VALUES('$van', '$id_delivery')");
        if (!mysql_query($sql,$connect)){ 
            die('Error: '. mysql_error()); 
        } 

    }
}

?>

我制作了2个文本字段,因为通常需要插入2个van编号,但有时会有3个和4个van编号。我有3个van编号的问题,因为它会将空字段插入数据库,下次再添加3时,对于其他文本字段,它将再次为空,而第三个不会被插入,因为已经存在空白数据数据库,它不会添加相同的空白值,因为它不再是唯一的。我希望能够插入数据并忽略空白字段,并仅插入包含数据且不为空白的文本字段。

4 个答案:

答案 0 :(得分:0)

mysql_select_db($database_connect, $connect); // take this outside the loop
foreach ($_POST['van'] as $van) {
    $van = trim($van);
    if ($van != '') {
        $sql = ("INSERT INTO tbl_van (van_number, tbl_delivery_details_id_delivery_details)     VALUES('$van', '$id_delivery')");
        if (!mysql_query($sql,$connect)){ 
            die('Error: '. mysql_error()); 
        }
    }
}

答案 1 :(得分:0)

首先,请查看PDO和SQL注入(参数绑定),因为这是将用户提供的数据插入数据库的最坏方法。

其次,阅读数据库规范化。你在这里遇到的问题是由于数据库设计缺陷造成的。

创建一个带有单一货车数据的货车表,并为与该货车相关的所有数字创建一个货车号码表。

答案 2 :(得分:0)

输入文本不同的名称:

<input type="text" name="name1" id="textfield2" />
<input type="text" name="name2" id="textfield2" />

然后您可以根据需要使用PHP代码。

答案 3 :(得分:0)

这样的事情怎么样?没有测试它只是检查周围:)不要忘记做适当的值检查和逃避.. :))

$values = array();
foreach($_POST['van'] as $van) {
        if( ! trim($van)) continue;
        $values[] = '(' . $number . ', ' . $id_delivery . ')';
}
if($values) {
        mysql_select_db($database_connect, $connect);    
        $query = 'INSERT INTO tbl_van (van_number, tbl_delivery_details_id_delivery_details) VALUES ' . implode(', ', $values);
        mysql_query($query, $connect);
}