2017-04-02 6 views
-2

Ich weiß nicht, wie ich meine Array-Daten in der Datenbank speichern kann, ich weiß nur, Daten abzurufen und anzuzeigen. Jede Anregung oder Diskriminierung ist in Ordnung für mich, weil ich nicht die Logik bekommen habe und im ein Noob und NeulingWie man Array-Werte in einer MySQL-Datenbank speichert

<?php 
    $cart_statement = "SELECT * FROM user_cart WHERE email = '$email'"; 
    $cart_res = mysqli_query($con,$cart_statement); 
    $storeArray = Array(); 
    $cart_num = mysqli_num_rows($cart_res); 
    while ($cart_row = mysqli_fetch_array($cart_res)) { 
     echo $storeArray[] = $cart_row['product_name'].","; 
    } 
    ?> 

MySQL-Tabelle user_cart

| - - - - - - | - - - - - - - - - - - - |
| cart_id | Produktname |
| - - - - - - | - - - - - - - - - - - - |
| - - -1 - - | - - -Laptop1 - - - |
| - - -2 - - | - - -Laptop2 - - - |
| - - - - - - | - - - - - - - - - - - - |

Ausgang ich will, ist Laptop1, Laptop2

store in tbl_orders

| - - - - - - - | - - - - - - - - - - - - - - - |
| Bestellnummer | - - - Produkte - - - - - |
| - - - - - - - | - - - - - - - - - - - - - - - |
| - - -1 - - - | - Laptop1, Laptop2 - |
| - - - - - - - | - - - - - - - - - - - - - - - |

sorry ich weiß nicht, wie Tabellen hier machen zu

+0

hilft, haben Sie es serialisiert es in einem einzigen Feld zu speichern, oder die einzelnen Werte in verschiedenen Bereichen zu speichern. – David

Antwort

0

Ich bin nicht sicher, ich verstehe Ihre Frage. Fragen Sie, wie Sie Daten aus einem Array in mehrere Zeilen Ihrer Tabelle einfügen? Dazu müssen Sie nur mehrere INSERT Abfragen erstellen, eine für jedes Array-Element, und diese mit den entsprechenden Daten ausführen, die an sie gebunden sind. Es ist am einfachsten, das Array dafür zu durchlaufen.

Zum Beispiel:

foreach ($cart_row as $value) { 
    $stmt = "INSERT INTO user_cart(ProductName, Qty, Price) VALUES (?, ?, ?)"; 
    $stmt = mysqli_stmt_prepare($con, $stmt); 
    mysqli_stmt_bind_param($stmt, "sii", $value["product_name"], $value["quantity"], $value["price"]); 
    mysqli_stmt_execute($stmt); 
    mysqli_stmt_close($stmt); 
} 
+0

einfügen es als eine in meiner Tabelle Daten –

+0

Oh, also wollen Sie mehrere Werte in einem einzigen Feld gespeichert werden? Es gibt keine integrierte Möglichkeit, das zu tun, Sie müssen sich für das Format entscheiden, das Sie für sich selbst wünschen. Sie können die Funktion implode() verwenden, um eine Liste mit Trennzeichen von Ihrem Array zu erstellen und diese zu speichern, oder die Funktion serialize(), um automatisch eine robustere, aber weniger lesbare Zeichenfolge daraus zu erstellen. – IceMetalPunk

+0

das ist fast mein Problem behoben, aber ich bekomme Laptop1, Laptop2, Laptop1, Laptop2? ich benutzte implode(); –

0

Diese Funktion fügt mehrere Zeilen gleiche Frage hier https://stackoverflow.com/a/36190690/6106973.

Sie müssen als ersten Parameter den Namen der Tabelle übergeben und die zweite ein assoziatives Array, das den Namen der Spalten als Schlüssel hat wie $ data = ['column_name' => $ value];

Hier ist der Code, hoffen, dass es

ein Array zum Speichern
public function insert($table, $data) 
{ 

    $query='INSERT INTO '.$table.' ('; 
    foreach($data as $key => $value) 
    { 
     $query .= $key.','; 
    } 
    $query = substr($query, 0, -1); 
    $query .= ') VALUES ('; 
    foreach($data as $key => $value) 
    { 
     $query .= ':'.$key.','; 
    } 
    $query = substr($query, 0, -1); 
    $query .= ');'; 

    $insert = $this->db->prepare($query); 
    $insert->execute($data); 

} 
Verwandte Themen