从数组位置

时间:2016-11-28 21:13:45

标签: php html mysql

我有几个值数组。我想使用循环将它们一次插入一个表中。我能够插入正确的行数,但值没有正确插入。

例如,$ingredient_general是已发布到此页面的数组。假设它有3个值。我希望位置0的值先插入,然后插入位置1的下一个循环,然后下一行获取位置2的值。三个顶部变量中的每一个都是每个都具有相同数值的数组。

我尝试在循环中的查询的值部分中执行$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++;
    }   

1 个答案:

答案 0 :(得分: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两次。一旦进入循环,一次进入循环。您还希望在$i < $c而不是$i <= $c时运行循环,因为指针从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;
  }
?>

使用建议的第二种方法,这是我的输出:

  

INSERT INTO ingredients(recipe_ID,general_name,image)VALUES   (&#39; 2&#39;,&#39; test&#39;,&#39; image.jpg&#39;)INSERT INTO ingredients(recipe_ID,   general_name,image)VALUES(&#39; 2&#39;,&#39; testing&#39;,&#39; image.jpg&#39;)INSERT INTO   ingredients(recipe_ID,general_name,image)VALUES(&#39; 2&#39;,&#39; tester&#39;,   &#39; image.jpg的&#39)

这是字符串插值的complex (curly) syntax