2017-03-11 66 views
0

我創建了多個輸入行,允許使用javascript添加和刪除行。如何在php中插入多個數組記錄?

下面是代碼:

var field = 1; 
 

 
function plan_fields() { 
 

 
    field++; 
 
    var objTo = document.getElementById('plan_fields') 
 
    var divtest = document.createElement("div"); 
 
    divtest.setAttribute("class", "form-group removeclass" + field); 
 
    var rdiv = 'removeclass' + field; 
 
    divtest.innerHTML = '<div class="col-sm-4 nopadding"><div class="form-group"> <input type="text" class="form-control" id="plannumber" name="plannumber[' + field + ']" value="" placeholder="School name"></div></div><div class="col-sm-4 nopadding"><div class="form-group"> <input type="text" class="form-control" id="Degree" name="Degree[' + field + ']" value="" placeholder="Degree"></div></div><div class="col-sm-4 nopadding"><div class="form-group"><div class="input-group"> <select class="form-control" id="plandate" name="plandate[' + field + ']"><option value="">Date</option><option value="2015">2015</option><option value="2016">2016</option><option value="2017">2017</option><option value="2018">2018</option> </select><div class="input-group-btn"> <button class="btn btn-danger" type="button" onclick="remove_plan_fields(' + field + ');"> <span class="glyphicon glyphicon-minus" aria-hidden="true"></span> </button></div></div></div></div><div class="clear"></div>'; 
 

 
    objTo.appendChild(divtest) 
 
} 
 

 
function remove_plan_fields(rid) { 
 
    $('.removeclass' + rid).remove(); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<form action="?create" method="post"> 
 
    <div class="panel-body"> 
 
    <div id="plan_fields"> 
 

 
    </div> 
 
    <div class="col-sm-4 nopadding"> 
 
     <div class="form-group"> 
 
     <input type="text" class="form-control" id="plannumber" name="plannumber[0]" value="" placeholder="Plan Number"> 
 
     </div> 
 
    </div> 
 
    <div class="col-sm-4 nopadding"> 
 
     <div class="form-group"> 
 
     <input type="text" class="form-control" id="context" name="context[0]" value="" placeholder="Context represented on plan"> 
 
     </div> 
 
    </div> 
 

 

 
    <div class="col-sm-4 nopadding"> 
 
     <div class="form-group"> 
 
     <div class="input-group"> 
 
      <select class="form-control" id="plandate" name="plandate"> 
 
      
 
      <option value="">Date Completed</option> 
 
      <option value="2015">2015</option> 
 
      <option value="2016">2016</option> 
 
      <option value="2017">2017</option> 
 
      <option value="2018">2018</option> 
 
      </select> 
 
      <div class="input-group-btn"> 
 
      <button class="btn btn-success" type="button" onclick="plan_fields();"> <span class="glyphicon glyphicon-plus" aria-hidden="true"></span> </button> 
 
      </div> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    <div class="clear"></div> 
 

 
    </div> 
 

 
    <div class="form-group"> 
 
    <div class="col-md-9 col-sm-9 col-xs-12 col-md-offset-3"> 
 
     <button type="submit" value="submit" class="btn btn-success">Add Plan</button> 
 
    </div> 
 
    </div> 
 

 
</form>

現在,我要添加多個陣列的記錄,但我在這裏卡住了,讓我怎麼解決我的PHP的一部分?

<?php    
    $host  = "localhost"; 
    $username = "root"; 
    $password = ""; 
    $dbname = "project"; 

    if (isset($_GET['create'])) { 
    $link = mysqli_connect($host, $username, $password, $dbname) 
     or die('Could not connect: ' . mysqli_error()); 

    mysqli_select_db($link, $dbname) 
     or die('Could not select database'); 

    foreach($_POST as $key => $value) 
    { 
     if (strstr($key, '')) 
     { 
      $x = str_replace('',NULL,$key); 
      inserttag($value, $x); 
     } 
    } 

    $plannumber= $_POST['plannumber[]']; 
    $plan = $_POST['context[]']; 
    $date = $_POST['plandate[]']; 


    $query = "INSERT INTO plans 
      VALUES ($plannumber,'$date','$plan')"; 
    $result = mysqli_query($link, $query) or die('Could not connect: '); 

    $message = "Plan Added"; 
    echo "<script type='text/javascript'>alert('$message');window.location.href = 'plans.php';</script>"; 



    } 


?> 
+0

'plannumber' alone and not'plannumber []'? – Roljhon

+0

您可以[SQL注入](http://php.net/manual/en/security.database.sql-injection.php)開放,並確實使用[Prepared Statements](http://php.net/)手冊/ en/mysqli.quickstart.prepared-statements.php)而不是串聯你的查詢。特別是因爲你沒有逃避用戶輸入! –

+0

[插入多個行與一個查詢MySQL]可能重複(http://stackoverflow.com/questions/12502032/insert-multiple-rows-with-one-query-mysql) - 該答案適用於MySQLi和Prepared Statements作爲好。 –

回答

0

如果你要存儲在表數組,那麼你可以使用serialize($array)功能(替換爲您數組變量名稱$陣列)。它會返回序列化的數據,然後你可以存儲該序列化的數組,我會強烈建議你準備好聲明。你的代碼是非常不安全的。

0

首先,您需要一個包含數組值的變量,然後該數組的值implode一個空格分隔符,implode分隔符值是一個字符串。那麼你可以插入分隔符值。像這樣

$plannumber= $_POST['plannumber[]']; 
$plannumber_separated = implode(" ", $plannumber); 
$plan= $_POST['context[]']; 
$plan_separated = implode(" ", $plan); 
$query = "INSERT INTO plansVALUES ($plannumber_separated,$plan_separated)"; 
+0

它沒有工作,你能幫助我嗎? – martinBibo

+0

你一個數組值插入一列嗎??? –