2016-11-28 6 views
-1

私は2つの値の配列を持っています。私はループを使用して一度に1つの行にテーブルに挿入したいと思います。正しい行数を挿入できますが、値が正しく挿入されていません。配列の位置からテーブルに挿入する

たとえば、$ingredient_generalは、このページに投稿された配列です。 3つの値があるとします。ポジション0の値を最初に挿入し、次に位置1の次のループに入れ、次のローはポジション2の値を取得します.3つのトップ変数のそれぞれは、それぞれに同じ数の値を持つすべての配列です。

ループ内のクエリの値部分に$ingredient_general['.$i.']を実行しようとしましたが、そのすべてが"$ingredient_general[0]"となり、これが表す値ではありません。

$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

'print_r($ ingredient_general);の出力は何ですか? – WEBjuju

+0

私はテストのためにそこにいました。それは私に配列の内容をエコーし​​ました。 – Kevin

+0

[MySQLiのパラメータ]の可能な複製(http://stackoverflow.com/questions/728229/parameters-in-mysqli) – Shadow

答えて

0

$iの前後に一重引用符を付ける必要はありません。あなたの文字列をエスケープし、それを連結しない場合

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

は、ベスト・プラクティスについては、私は、中括弧を使用して配列をラップします。

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

追加: あなたは二回$iが増加しています。ループ内に1回、ループ内に1回。あなたはまた、私の出力したポインタは0から始まり、カウントが、ここで、第二の方法を提案し使用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; 
    } 
?> 

から始まるので、代わりの$i <= $cながらループを実行したい:

INSERTを(2、 'test'、image.jpg)INSERT INTO ingredients(recipe_ID、 general_name、image)VALUES( '2'、 'testing'、image) jpg ')INSERT INTO ingredients(recipe_ID、general_name、image)VALUES ( '2'、 'テスター' 'image.jpg')

これは、文字列補間complex (curly) syntaxあります。

+0

私は引用符を使わずにそれをやってみたが、テーブルにはingredients_general [$ i]と書かれていた。 – Kevin

+1

2番目のオプションで述べたように中括弧を試しましたか? – Daerik

+0

中括弧が働いた...あなたは男です!これについてのドキュメントはどこにありますか? – Kevin

関連する問題