我有几个值数组。我想使用循环将它们一次插入一个表中。我能够插入正确的行数,但值没有正确插入。
例如,$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++;
}
答案 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 INTOingredients
(recipe_ID, general_name,image)VALUES(&#39; 2&#39;,&#39; testing&#39;,&#39; image.jpg&#39;)INSERT INTOingredients
(recipe_ID,general_name,image)VALUES(&#39; 2&#39;,&#39; tester&#39;, &#39; image.jpg的&#39)
这是字符串插值的complex (curly) syntax。