Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用for each循环插入数据并忽略没有数据的文本字段_Php_Mysql_Sql - Fatal编程技术网

Php 使用for each循环插入数据并忽略没有数据的文本字段

Php 使用for each循环插入数据并忽略没有数据的文本字段,php,mysql,sql,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> <

我有两个文本字段插入到一个表中

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>
    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个厢式车编号,但有时会有3个和4个厢式车编号。我对3个van编号有一个问题,因为它会将空字段插入数据库,下次我再次添加3时,另一个文本字段将再次为空,第三个不会被插入,因为数据库中已经有一个空白数据,它不会添加相同的空白值,因为它不再是唯一的。我希望能够插入数据,忽略空白字段,只插入具有数据的文本字段,而不是空白。

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

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()); 
        }
    }
}
其次,阅读数据库规范化。这里的问题是由于数据库设计缺陷造成的


使用单个van数据创建van表,并为与此van关联的所有编号创建van编号表。

giv输入文本不同名称:

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


然后,您可以随心所欲地使用PHP代码。

这样的东西怎么样?还没有测试它只是四处检查:)别忘了做正确的值检查和转义…)


如何忽略空白字段?@ USER 328 2248:语句<代码>($vA.=)' { /COD> >检查字段是否为空,如果是,忽略它。我有$VAYMySQL LIALL逃逸字符串($POST(VAN));我不包括在我的后面,这还远远不够好,MySQL库被弃用(参见)还有一个很好的理由:与在准备好的语句中使用绑定参数相比,这是非常不安全的。您的场景仍然会尖叫“糟糕的数据库设计”。如果您有可变数量的van编号,请将它们放在不同的表中,并使用一对多关系。您知道如何忽略空白文本字段吗?
$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);
}