2017-04-18 77 views
-1

我在使用foreach循環將值插入數據庫時​​遇到了問題。插入的值爲0,只插入一行。 以下是我的輸入代碼。使用foreach循環將值插入數據庫

<td bgcolor="#FFFFFF"><input id="id" name="pro_id[]" type="text"></td> 
<td bgcolor="#FFFFFF"><input id="name" name="pro_name[]" type="text"></td> 
<td bgcolor="#FFFFFF"><input id="quan" name="pro_quan[]" type="text"></td> 

下面是我的插入代碼..

if (isset($_POST['Submit'])) { 
$username = $_SESSION['admin_id']; 

foreach ($_SESSION["products"] as $item) 
{ 
    $ids = $item["pro_id"]; 
    $names = $item["pro_name"]; 
    $quans = $item["pro_quan"]; 

} 

$query = "INSERT INTO product(username, pro_id, pro_name, pro_quan) VALUES ('$username', '$ids', '$names', '$quans')"; 
$result = mysqli_query($con, $query); 
if($result) 
{ 
    header("Location:delete.php"); 
} 
else 
{ 
    mysqli_error($con); 
} 
} 

插入只會爲0的值,我不知道什麼是錯誤在這裏。請幫我看看我的代碼出了什麼問題。感謝您的幫助

+0

[小博](http://bobby-tables.com/)說***腳本是在對SQL風險注入攻擊。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)***瞭解[準備](http://en.wikipedia。 org/wiki/Prepared_statement)語句[MySQLi](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)。即使[轉義字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! –

+0

@June你想要什麼,你想從循環插入數據到數據庫? – webpic

+0

是的,我想插入到數據庫的數組值 – June

回答

1

好的現場@JayBlanchard關於會話開始。 您必須檢查產品的循環繼續之前的會話陣列

#start up session 
    if(!isset($_SESSION)){ 
     session_start(); 
     } 
#for debugging purposes. Comment the line below when done. 
var_dump($_SESSION['products']); 
     try{ 

     if (isset($_POST['Submit'])) { 
      $username = $_SESSION['admin_id']; 
      #verify that the product array in session is not empty 
      if(!empty($_SESSION['products']) && count($_SESSION['products']) > 0){ 
       foreach ($_SESSION["products"] as $item) 
       { 
       $ids = $item["pro_id"]; 
       $names = $item["pro_name"]; 
       $quans = $item["pro_quan"]; 

       }else{ 
        throw new Exception('no products for this session'); 
       } 
      } 

      $query = "INSERT INTO product(username, pro_id, pro_name, pro_quan) VALUES ('$username', '$ids', '$names', '$quans')"; 
      $result = mysqli_query($con, $query); 
      if($result) 
      { 
       header("Location:delete.php"); 
      } 
      else 
      { 
       mysqli_error($con); 
      } 
      } 

     }catch(Exception $ex){ 
     echo $ex->getMessage(); 
     exit; 
     } 
+0

我嘗試使用代碼,但是顯示這個錯誤無法使用isset表達(喲你可以使用「null!==表達式」代替) – June

+0

道歉。我已更新我的代碼。我錯過了支架 – Akintunde007

+0

是的,我已經糾正它 – June