Php 使用for each循环插入数据并忽略没有数据的文本字段
我有两个文本字段插入到一个表中 HTMLPhp 使用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> <
<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);
}