我有一个html表单,其中有五个输入字段,其中可以输入一个或多个产品特征。输入的值应该被发送到一个sql表。这适用于for循环,当所有5个字段都包含值时。
<input name="productmaingroupsinput[1]" size="80"/><br>
<input name="productmaingroupsinput[2]" size="80"/><br>
<input name="productmaingroupsinput[3]" size="80"/>
<input name="productmaingroupsinput[4]" size="80"/>
<input name="productmaingroupsinput[5]" size="80"/>
$productmaingroupsinput = $_POST["productmaingroupsinput "];
for ($i=1; $i<6; $i++) {
$sql="INSERT INTO productmaingroup (productmaingroup_id, product_id,
productmaingroups) VALUES ('', (SELECT master_id from producttable
WHERE productname='$ productname '), '".productmaingroupsinput
[$i]."')";
mysqli_query($db, $sql);
}
但是,当填入条目的字段较少时,我的sql表中就会得到空条目。现在,我想避免sql表中的空字段。我试过
if (isset($_POST["productmaingroupsinput[$k]"])) {
$j = $k + 1;
}
或
$j = count($productmaingroupsinput);
for ($i=1; $i<$j; $i++) {
$sql="INSERT INTO productmaingroup (productmaingroup_id, product_id,
productmaingroups) VALUES ('', (SELECT master_id from producttable
WHERE productname='$ productname '), '".productmaingroupsinput
[$i]."')";
但它不起作用。
我如何使for循环动态,以便它只发送输入的值到sql表?
谢谢!
你应该检查是否value为null .Like if($_POST["productmaingroupsinput"][$i]!= null)然后只执行该查询.我希望这将为您工作
这就是我的解决方案:
$master = mysqli_query($db, "SELECT master_id from producttable WHERE productname='{$productname}'");
$master_id = $master ? mysqli_fetch_field($master) : 'NULL';
foreach($_POST['productmaingroupsinput'] as $group) {
if($group=='') {
continue;
}
$groups[] = "('', {$master_id}, '".mysqli_real_escape_string($group)."')";
}
$result = mysqli_query($db, "INSERT INTO productmaingroup (productmaingroup_id, product_id, productmaingroups) VALUES ".implode(', ', $groups));
您必须循环productmaingroupsinput post值并检查是否为空。执行如下操作
<?php
foreach($_POST['productmaingroupsinput'] as $row)
{
if($row!='')
{
$sql="INSERT INTO productmaingroup ( product_id,
productmaingroups) VALUES ( (SELECT master_id from producttable
WHERE productname='$productname'), '".$row."')";
mysqli_query($db, $sql);
}
else
{
echo "value empty";
}
}
?>