我想在php查询中运行while循环,以从textarea提交地址

我想在php查询中运行while循环,以从textarea提交地址,php,mysql,loops,Php,Mysql,Loops,我正在做一个小项目。我有一个文本区域,当我使用 $address_complete = $_POST['address']; $address_array = explode("\n", $address_complete); $address_count = count($address_array); 现在我知道有多少值来自这个数组。现在,我构建了一个要插入数据库的查询: $query = "INSERT INTO customer SET ID = '$id',

我正在做一个小项目。我有一个文本区域,当我使用

$address_complete = $_POST['address'];
$address_array = explode("\n", $address_complete);
$address_count = count($address_array);
现在我知道有多少值来自这个数组。现在,我构建了一个要插入数据库的查询:

$query = "INSERT INTO customer SET ID = '$id',
                            Name = '$name',
                            Email = '$email',
                            Address1 = IF('$address_array[0]' = '', Address1, '$address_array[0]'),
                            Address2 = IF('$address_array[1]' = '', Address1, '$address_array[1]'),
                            Address3 = IF('$address_array[2]' = '', Address1, '$address_array[2]'),
                            Address4 = IF('$address_array[3]' = '', Address1, '$address_array[3]'),
                            Address5 = IF('$address_array[4]' = '', Address1, '$address_array[4]'),
                            City = '$city',
                            Country = '$country'";
mysqli_query($dbc,$query);
以上工作良好,只要我有5个值来自文本区域。但如果我的偏移量小于,则会得到错误“Undefined offset:”

我曾想过在查询中做一个while循环,但我对令人敬畏的php世界还是很陌生,所以我不太清楚。我环顾四周,但找不到正确的答案

我相信你们能帮上忙,但请记住我是新来的,所以请说简单的语言:)

谢谢

$query=“插入到客户集ID=“$ID”,
Name=“$Name”,
电子邮件=“$Email”,”;
$addressQuery=“”;

对于($i=0;$i我假设您已将默认值设置为Address1、2、3、4和5,以防它们为空

$query = "INSERT INTO customer SET ID = '$id',
                            Name = '$name',
                            Email = '$email',
                            City = '$city',
                            Country = '$country'";

for($i=0;$i<$address_count;$i++)
{
if($address_array[$i] != '')
$query .=", Address".($i+1)." = '$address_array[$i]'";
}

mysqli_query($dbc,$query);
$query=“插入到客户集ID=“$ID”,
Name=“$Name”,
电子邮件=“$Email”,
城市=“$City”,
国家=“$Country”;

对于($i=0;$i修复分配以生成正确数量的数组项

$address_array = address_pad(explode("\n", $address_complete), 5, '');
使用三元运算符和循环修复查询结构

foreach($address_array as $index => $value) {
  $query .= ($value) ? " `Address{$index + 1}` = '{$value}'," : "";
}

可爱的漏洞。谢谢,伙计,这一切都是有道理的,但它不起作用。$count不应该是$address\u count?哦,我尝试回显$query,它只给了我0。如果这是有道理的话,就在你回答之前,我已经设法让它以更简单的方式工作。更新我的问题,以便对某人有利…谢谢编辑太长了,读不下去了,第一个代码是错误的,第一个代码是错误的。首先,你不检查IsSET,它会再次抛出未定义的通知。第二个你可以做同样的操作,而不需要像你在Edt.Tel.Dr中那样拷贝代码。code@Michael是的,我的错。删除了有缺陷的代码。谢谢你们两位…它现在开始工作了…@MichaelArenzon感谢你们指出这一点,wishchaser感谢你们更新它…酷:)
foreach($address_array as $index => $value) {
  $query .= ($value) ? " `Address{$index + 1}` = '{$value}'," : "";
}