2017-04-18 74 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