2016-11-28 1 views
-1

Ich habe ein paar Arrays von Werten. Ich möchte sie in einer Tabelle Zeile für Zeile mit einer Schleife einfügen. Ich kann die richtige Anzahl von Zeilen einfügen, aber die Werte werden nicht richtig eingefügt. Beispiel: $ingredient_general ist ein Array, das auf diese Seite gepostet wurde. Angenommen, es hat 3 Werte. Ich möchte den Wert an Position 0 zuerst einfügen, dann an der nächsten Schleife an Position 1, und dann erhält die nächste Zeile den Wert an Position 2. Jede der drei oberen Variablen sind alle Arrays mit der gleichen Anzahl von Werten in jedem.In Tabelle von Array-Positionen einfügen

Ich habe versucht, $ingredient_general['.$i.'] in Werte Teil der Abfrage in der Schleife, aber alles, was es tat, wurde "$ingredient_general[0]" in die Tabelle und nicht den Wert, dass dies darstellt.

$ingredient_general = $_POST['ingredient_general']; 
    $ingredient_amount = $_POST['ingredient_amount']; 
    $ingredient_image = $_POST['ingredient_image']; 
    $recipe_ID = $_POST['recipe_ID']; 

    print_r($ingredient_general); 

    //$name = $ingredient_general.$ingredient_amount; 

    $c = count($ingredient_general); 

    for ($i = 0; $i <= $c; $i++) { 

     $addIngredientQuery = "INSERT INTO `ingredients` (recipe_ID,general_name, image) VALUES ('$recipe_ID', '$ingredient_general', '$ingredient_image')"; 
     mysqli_query($con, $addIngredientQuery); 
     $i++; 
    } 
+0

Was ist die Ausgabe von 'print_r ($ ingredient_general);'? – WEBjuju

+0

Ich hatte es zum Testen dort. Es echote mir den Inhalt des Arrays. – Kevin

+0

Mögliche Duplikate von [Parameter in MySQLi] (http://StackOverflow.com/Questions/728229/Parameters-in-Mysqli) – Shadow

Antwort

0

Sie müssen keine einfachen Anführungszeichen um $i hinzufügen.

$addIngredientQuery = "INSERT INTO `ingredients`(recipe_ID, general_name, image) VALUES ('$recipe_ID','$ingredient_general[$i]', '$ingredient_image')"; 

Für Best Practice, würde ich Ihre Array mit geschweiften Klammern wickeln, wenn Sie wollen nicht Ihre Zeichenfolge zu entkommen und es verketten.

$addIngredientQuery = "INSERT INTO `ingredients`(recipe_ID, general_name, image) VALUES ('$recipe_ID','{$ingredient_general[$i]}', '$ingredient_image')"; 

Zusätzlich: Sie steigen zweimal $i. Einmal in der Schleife und einmal innerhalb der Schleife. Sie wollen auch die Schleife während statt $i <= $c da der Zeiger beginnt bei 0 und die Zählung beginnt bei 1.

<?php 
    $ingredient_general = array('test', 'testing', 'tester'); 
    $ingredient_amount = 5; 
    $ingredient_image = 'image.jpg'; 
    $recipe_ID = 2; 

    $c = count($ingredient_general); 

    for($i = 0; $i < $c; $i++) { 
    $addIngredientQuery = "INSERT INTO `ingredients`(recipe_ID, general_name, image) VALUES ('$recipe_ID','{$ingredient_general[$i]}', '$ingredient_image')"; 
    echo $addIngredientQuery . PHP_EOL; 
    } 
?> 

Mit der zweiten Methode vorgeschlagen laufen, hier war meine Ausgabe:

INSERT INTO ingredients (rezept_ID, general_name, image) WERTE ('2', 'test', 'image.jpg') EINFÜGEN IN ingredients (rezept_ID, general_name, image) WERTE ('2', 'testen', 'image. jpg ') INSERT IN ingredients (recipe_ID, general_name, image) WERTE ('2', 'Tester' 'image.jpg')

Dies ist die complex (curly) syntax für Streich Interpolation.

+0

Ich versuchte es ohne die Anführungszeichen und die Tabelle endete beim Einfügen von Ingredients_General [$ i] wie geschrieben – Kevin

+1

Haben Sie die geschweiften Klammern wie in der zweiten Option beschrieben ausprobiert? – Daerik

+0

geschweifte klammern arbeiteten ... du bist der mann! Wo finde ich Dokumentation dazu? – Kevin