2016-10-20 57 views
-1

我有一個購物車,其中的所有產品都是在將它們存儲在會話中的foreach循環內部生成的。 我想發佈每個產品在我的表:訂單。 但我收到一些錯誤。在數據庫中發佈一個php foreach循環,數據插入錯誤

通知:Array對字符串的轉換在C:\ XAMPP \ htdocs中\ SYSTEM \ clientes \上線畫廊\ postOrder.php 46

說明:Array對C字符串轉換:\ XAMPP \ htdocs中\ SYSTEM \ clientes \在線畫廊\ postOrder.php 54

什麼,我嘗試後......

Array 
(
    [numero] => Array 
     (
      [0] => 1 
      [1] => 1 
      [2] => 1 
      [3] => 1 
     ) 

    [vari] => Array 
     (
      [0] => 
      [1] => 1 
      [2] => 2 
      [3] => 3 
     ) 

    [desenho] => Array 
     (
      [0] => img/1.0.png 
      [1] => img/1-1.png 
      [2] => img/1-2.png 
      [3] => img/1-3.png 
     ) 

    [fabric] => Array 
     (
      [0] => 1 
      [1] => 4 
      [2] => 2 
      [3] => 2 
     ) 

    [size] => Array 
     (
      [0] => 45 
      [1] => 45 
      [2] => 45 
      [3] => 50 
     ) 

    [qnty] => Array 
     (
      [0] => 1 
      [1] => 1 
      [2] => 1 
      [3] => 1 
     ) 

    //some other arrays 

    [submit_post] => Enviar 
) 

這是我foreach loop code

我想張貼這樣...

if(isset($_POST['submit_post'])){ 
     $date = date('Y-m-d'); 
     $size = isset($_POST['size']) ? $_POST['size'] : array(); 
     $numero = isset($_POST['numero']) ? $_POST['numero'] : array(); 
     $vari = isset($_POST['vari']) ? $_POST['vari'] : array(); 
     $desenho = isset($_POST['desenho']) ? $_POST['desenho'] : array(); 
     $fabric = isset($_POST['fabric']) ? $_POST['fabric'] : array(); 
     $size = isset($_POST['size']) ? $_POST['size'] : array(); 
     $qnty = isset($_POST['qnty']) ? $_POST['qnty'] : array(); 
     $cost = isset($_POST['cost']) ? $_POST['cost']: array(); 
     $subtotal = isset($_POST['subtotal']) ? $_POST['subtotal'] : array(); 
     $total = isset($_POST['total']) ? $_POST['total'] : array(); 
     $all_products = isset($_POST['all_products']) ? $_POST['all_products'] : array(); 
     $subT=0; 

     $pedido=$date." ".$_SESSION['userName']."-".$_SESSION['userLName']; 
//46 $query = "SELECT * FROM almofadas WHERE id_price='$fabric'"; 
     $result = mysqli_query($conn,$query); 
     while($rows = mysqli_fetch_assoc($result)){ 
      $tecido=$rows['tecido']; 

     } 

     $ins_sql = "INSERT INTO orders (fabric,size,product_quantity,order_id,product_img,product_title,variante,product_cost,product_subtotal) 
//54     VALUES ('$fabric', '$size' , '$qnty', '$pedido', '$desenho', '$numero', '$vari', '$cost', '$subT')"; 
     if ($conn->query($ins_sql) === TRUE) { 
      echo "New record created successfully"; 
      } else { 
      echo "Error: " ; 
      } 
     $conn->close(); 
        } 

什麼我做錯了,我怎麼會解決這一問題?

+0

內插入您需要創建值設置像 INSERT INTO命令(「字段1」,「字段2」,「字段N」)值批量記錄( (value1),value2,valueN,value1,value2,valueN,value1,value2,valueN,value1,value2, 「值N」),( 「VALUE1」, 「VALUE2」, 「值N」); – Veer

+0

這個錯誤信息非常清楚 - 你正在將一個數組轉換成一個字符串。在這種情況下,第46行中的$ fabric是一個數組。你不想這樣做。 – WillardSolutions

+1

將您的數組值轉換爲數據值集。 – Veer

回答

1

您試圖插入數組而不是單個項目作爲值。

把你所有的插入代碼foreach循環

foreach($fabrics as $fabric) 
{ 
    $pedido=$date." ".$_SESSION['userName']."-".$_SESSION['userLName']; 
    $query = "SELECT * FROM almofadas WHERE id_price='$fabric'"; 
    $result = mysqli_query($conn,$query); 
    while($rows = mysqli_fetch_assoc($result)){ 
     $tecido=$rows['tecido']; 

    } 

    // search for index of current item 
    $index = array_search($f, $fabric); 

    // write your insert code here where column values should be like $fabric[$index], $size[$index] and so on. 
    // I mean you need to fetch array element by index. 
} 
+0

看看我是怎麼做的[mycode](https://codeshare.io/PYa6t),但我得到一個新的錯誤,順便說一句,這個代碼可以在鏈接中編輯。 –

+0

這是錯誤解析錯誤:語法錯誤,意外的''(T_ENCAPSED_AND_WHITESPACE),期待標識符(T_STRING)或變量(T_VARIABLE)或編號(T_NUM_STRING)在 –

+1

對不起,這個愚蠢的錯誤。它應該是'$ fabric [$ index]',而不是$ fabric ['index']'。此外,我正在處理您的代碼。這裏的Foreach錯了。 –

0

修復您的變量,因爲它們的默認值是數組:

$fabric = isset($_POST['fabric']) ? $_POST['fabric'] : array(); 

務必:

$fabric = isset($_POST['fabric']) ? $_POST['fabric'] : ''; 

相反。只有在$ fabric被設置時才做SELECT查詢。

+0

它沒有那樣工作 –

+0

你是怎麼做到的? – krasipenkov

相關問題