2014-06-26 70 views
-5

我正在嘗試爲多個插入值編寫代碼,但無法正常工作。錯誤是這個警告:爲foreach()提供的無效參數。任何幫助將升值。插入多個值不起作用

if (isset($_POST['mul_pr'])) { 
$counter = $mysqli->real_escape_string($_POST["counter"]); 
$pr = $mysqli->real_escape_string($_POST["pr"]); 
$pr_qty = $mysqli->real_escape_string($_POST["pr_qty"]); 
$unit = $mysqli->real_escape_string($_POST["unit"]); 
$pr_date = $mysqli->real_escape_string($_POST["pr_date"]); 
$gss_date = $mysqli->real_escape_string($_POST["gss_date"]); 
$request = $mysqli->real_escape_string($_POST["requested"]); 
$approve = $mysqli->real_escape_string($_POST["approved"]); 
$desig_r = $mysqli->real_escape_string($_POST["designation_r"]); 
$desig_a = $mysqli->real_escape_string($_POST["designation_a"]); 
$year = $mysqli->real_escape_string($_POST["year"]); 
$pr_id = $mysqli->real_escape_string($_POST["pr_id"]); 

    if (count($counter > 0)) 
    { 
     $new = array(); 
     foreach ($counter as $key => $value) 
     { 
      $new[] = "('" . $counter . "', '" . $pr . "', '" . $pr_qty . "', '" . $unit . "','" . $pr_date . "', '" . $gss_date . "', '" . $request . "', '" . $approve . "' 
      , '" . $desig_r . "', '" . $desig_a . "', '" . $year . "', '" . $pr_id . "')"; 
     } 
     if (count($new) > 0) 
     { 
      $result = $mysqli->query("INSERT INTO purchase_request (counter, pr, total_quantity, unit, pr_date, gss_date, requested, designation_r, approved, designation_a,year,pr_id) 
      VALUES " . implode(', ', $new)); 
     } 
    } 
} 
+0

你有沒有問過這個了嗎? http://stackoverflow.com/questions/24421680/insert-multiple-values-in-php-mysql –

+0

閱讀此:http://www.php.net/manual/en/control-structures.foreach.php – Locke

回答

1

首先錯誤是在這裏:

if (count($counter > 0)) 

應該

if (count($counter) > 0) 

,你可能會得到警告,因爲count($counter)可能是0,由於僞造的,如果條件下,它可能在非數組或空數組上執行for循環,因此出錯

0

1。是你的情況「$計數器」不是一個數組或對象來遍歷...

我只是建議,因爲你已經有一半的硬編碼SQL語句

$結果= $ ('$ counter','$ pr','$','$'','')查詢(「INSERT INTO purchase_request(counter,pr,total_quantity,unit,pr_date,gss_date,requested,designation_r,approved,designation_a,year,pr_id)

VALUES '');

2。另外,如果你想「自動化」你的名字值對進入SQL,你就必須準備一個更完整的「$ =新陣列()」 ...這樣的事情

$new["counter"] = $mysqli->real_escape_string($_POST["counter"]); 
$new["pr"] = $mysqli->real_escape_string($_POST["pr"]); 
//and so on... 

然後你就不會需要一個for循環任何更多與 「array_keys($新)」

$result = $mysqli->query("INSERT INTO purchase_request (".implode(",", array_keys).") 
     VALUES ('" . implode("','" , array_values($new))) . "');"; 
0
Use this , it work for u 

if (isset($_POST['mul_pr'])) { 
$counter = $mysqli->real_escape_string($_POST["counter"]); 
$pr = $mysqli->real_escape_string($_POST["pr"]); 
$pr_qty = $mysqli->real_escape_string($_POST["pr_qty"]); 
$unit = $mysqli->real_escape_string($_POST["unit"]); 
$pr_date = $mysqli->real_escape_string($_POST["pr_date"]); 
$gss_date = $mysqli->real_escape_string($_POST["gss_date"]); 
$request = $mysqli->real_escape_string($_POST["requested"]); 
$approve = $mysqli->real_escape_string($_POST["approved"]); 
$desig_r = $mysqli->real_escape_string($_POST["designation_r"]); 
$desig_a = $mysqli->real_escape_string($_POST["designation_a"]); 
$year = $mysqli->real_escape_string($_POST["year"]); 
$pr_id = $mysqli->real_escape_string($_POST["pr_id"]); 

    if (count($counter) > 0)) 
    { 
     $new = array(); 
     for($i=0;$i<count($counter);$i++) 
     { 
      $new[] = "('" . $counter . "', '" . $pr . "', '" . $pr_qty . "', '" . $unit . "','" . $pr_date . "', '" . $gss_date . "', '" . $request . "', '" . $approve . "' 
      , '" . $desig_r . "', '" . $desig_a . "', '" . $year . "', '" . $pr_id . "')"; 

      if (count($new) > 0) 
      { 
      $result = $mysqli->query("INSERT INTO purchase_request (counter, pr, total_quantity, unit, pr_date, gss_date, requested, designation_r, approved, designation_a,year,pr_id) 
      VALUES " . implode(', ', $new)); 
      $new=""; 
      } 
     } 




    } 
} 
+0

我試過了,但只有1行插入數據庫。 – user3631428