2016-07-06 111 views
0
foreach ($textAr as $BachelorsDegrees) 
{ 
foreach ($textArCert as $Certifications) 
{ 
foreach ($textArDip as $Diplomas) 
{ 
foreach ($textArAD as $AssociateDegrees) 
{ 
foreach ($textArMD as $MastersDegrees) 
{ 
foreach ($textArDD as $DoctorateDegrees) 
{ 
foreach ($textArSD as $SpecialDegreePrograms) 
{ 

什么是最好的方式来使上述代码的工作(这只是整个代码的片段)?每个变量,例如$ BachelorsDegrees,都是HTML表单中的一个textarea框。我试图从每个textarea框中插入值到单个行中的数据库中。我得到它为一个textarea框工作,但如何使它适用于多个textarea框?不同变量的多个foreach循环?

正在考虑做一个if else语句和一个INSERT和UPDATE sql语句,以便当一个foreach循环工作时,它会将数据插入数据库,然后循环停止,然后else语句将进入下一个foreach循环和UPDATE查询会更新下一列,而不是插入相同的产品。如果我做了多个INSERT查询,我会为每个变量创建更多的行,这是我不想要的。每个变量的值有更多的行,但实际变量的行不是。每个变量代表一列。

例如,

当从BachelorsDegrees textarea的值插入到了它的列中,下一个循环将运行(认证)到下一列。所以我认为UPDATE查询会很有效。这样我在每一列中都没有NULLS。

+0

你可以添加你的表定义?这些文本框是否相互依赖?据我所知,你不需要嵌套循环。只需编写7个独立的循环。或者你只是想避免多次写入插入代码?这就是上帝创造功能的原因。 – Solarflare

回答

0

如果您对所有字段相等数量的输入(Bachelorsdegree,认证等),那么你可以采取一个输入字段的计数变成equation.e.g

$totalinputs=count($textAr); 
for($i=0;$i<$totalinputs;$i++){ 
    $bachelordegree=$textAr[$i]; 
    $certificate=$textArCert[$i]; 
    $diploma=$textArDip[$i]; 
    ..... 
    ..... 
    //use above stored variables to insert/update into  your respective table. 

}