使用循环而不是逐个将数据插入MySql

时间:2017-07-05 15:55:30

标签: php html mysql database

我的Html代码如下:

<form name="creditAssessPage2" id="basicform" method="post" action="post.php" enctype="multipart/form-data">
    <tr>
        <td><input type="text" name="finanIns1" id="finanIns1" value=""></td>

        <td id="balance"><input type="number" name="balance1" id="balance1" value="" min="0"></td>
        <td id="MonthyComm"><input type="number" name="monthlyComm1" id="monthlyComm1" value="" min="0"></td>
    </tr>
    <tr>
        <td><input type="text" name="finanIns2" id="finanIns2" value=""></td>

        <td id="balance"><input type="number" name="balance2" id="balance2" value="" min="0"></td>
        <td id="MonthyComm"><input type="number" name="monthlyComm2" id="monthlyComm2" value="" min="0"></td>
    </tr>
    <tr>
        <td><input type="text" name="finanIns3" id="finanIns3" value=""></td>

        <td id="balance"><input type="number" name="balance3" id="balance3" value="" min="0"></td>
        <td id="MonthyComm"><input type="number" name="monthlyComm3" id="monthlyComm3" value="" min="0"></td>
    </tr>
    <tr>

</form>

我的post.php代码如下:

    require_once 'db/dbfunction.php';
    require_once 'db/dbCreditAssessment.php';

    session_start();
    $con = open_connection();
$finanIns1 = $_POST['finanIns1'];
$balance1 = $_POST['balance1'];
$monthlyComm1 = $_POST['monthlyComm1'];

$finanIns2 = $_POST['finanIns2'];
$balance2 = $_POST['balance2'];
$monthlyComm2 = $_POST['monthlyComm2'];

$finanIns3 = $_POST['finanIns3'];
$balance3 = $_POST['balance3'];
$monthlyComm3 = $_POST['monthlyComm3'];

addemployementdetails($con,$finanIns1,$balance1,$monthlyComm1);
addemployementdetails($con,$finanIns2,$balance2,$monthlyComm2);
addemployementdetails($con,$finanIns3,$balance3,$monthlyComm3);

close_connection($con);

我的dbCreditAssessment.php代码如下:

function addemployementdetails($con,$finanIns1,$balance1,$monthlyComm1){

    $query = "insert into employementdetails(finance,balance,monthlycomm) 
            values('$finanIns1','$balance1','$monthlyComm1')";            
                 //echo "{$sqlString}";



                 $insertResult = mysqli_query($con, $query);


                 if($insertResult){
                     echo " Applicant Detail Added !<br />";
                     echo "<a href='index.php'>Back to Home</a>";
                 }
                 else {
                     echo " Error !";
                     echo "{$query}";
                     //header('Location: post.php');
                 }                                  
}

此功能将重复3次。 实际上,还有很多相同的字段要键入。例如finanIns1,finanIns2,finanIns3,finanIns4,finanIns5等。

有没有办法使用循环来替换这种插入数据的方式? 此外,如果字段为空,则不会将数据插入Mysql

3 个答案:

答案 0 :(得分:2)

首先,计算$ _POST数组中finanIns的出现次数。然后使用&#39; for&#39;函数循环它。

<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ade4ad">
    <TextView
        android:id="@+id/first"
        android:layout_width="90dp"
        android:layout_height="40dp" 
        android:background="#000"
        app:layout_constraintTop_toTopOf="parent" 
        app:layout_constraintLeft_toLeftOf="parent" />
    <TextView
        android:id="@+id/second"
        android:layout_width="90dp"
        android:layout_height="40dp"
        android:background="#fff"
        android:layout_marginTop="10dp"
        app:layout_constraintTop_toBottomOf="@+id/first" 
        app:layout_constraintLeft_toLeftOf="@+id/first" 
        app:layout_constraintRight_toRightOf="@+id/first" />
</android.support.constraint.ConstraintLayout>

请记住使用mysqli_real_escape_string和trim来清理这些输入。将您的代码更改为:

$count = count(preg_grep("/^finanIns[\d]*/", array_keys($_POST)));

for($i = 1; $i <= $count; $i++){ 
    $finanIns = $_POST['finanIns'.$i];
    $balance = $_POST['balance'.$i];
    $monthlyComm = $_POST['monthlyComm'.$i];

    addemployementdetails($con,$finanIns,$balance,$monthlyComm);
}

答案 1 :(得分:0)

这可能有所帮助。

for($i = 1 ; $i < 4 ; $i++){ 
  $finanIns = $_POST['finanIns'.$i];
  $balance = $_POST['balance3'.$i];
  $monthlyComm = $_POST['monthlyComm3'.$i];
  if($finanIns != "" && $balance != "" && $monthlyComm != ""){
    addemployementdetails($con,$finanIns,$balance,$monthlyComm);
  }
}

另一个代码段

如果输入的数量是用户需要的,那么您需要添加一个隐藏的输入,该输入包含包含finanIns,balance,monthlyComm输入的表行数。

你可以把name =&#34; finanIns []&#34;如果您有3个或更多输入。如果是,那么只需使用它并访问该值为$ _POST [&#39; finanIns&#39;] [$ i]

for($i = 1 ; $i < $_POST['number_of_inputs']  ; $i++){ 
  $finanIns = $_POST['finanIns'][$i];
  $balance = $_POST['balance'][$i];
  $monthlyComm = $_POST['monthlyComm'][$i];
  if($finanIns != "" && $balance != "" && $monthlyComm != ""){
    addemployementdetails($con,$finanIns,$balance,$monthlyComm);
  }
}

答案 2 :(得分:0)

如果你知道你拥有的字段数(1,2,3)你可以做的是php中的for循环:

// make a loop to go according to the number of fields you have
for($i=1;$i<=3;$i++){ 
    // assign the fields value to the variables
    $finanIns = $_post['finanIns'.$i];
    $balance = $_post['balance'.$i];
    $monthlyComm = $_post['monthlyComm'.$i];
    //check if fields are empty, if not, insert to mysql
    if($finanIns != "" && $balance != "" && $monthlyComm != ""){
        addemployementdetails($con,$finanIns,$balance,$monthlyComm);
    }
}

请告诉我它是否正常工作:)