【问题标题】:Insert array connected to foreach loop into database将连接到 foreach 循环的数组插入数据库
【发布时间】:2016-02-18 22:51:56
【问题描述】:

首先,我对此有点陌生,不知道标题是否正是我所要求的,所以我会主动道歉。 (我也是瑞典人,所以我的英语可能并不完美)。我查看了“类似问题”,但到目前为止我没有发现任何感兴趣的内容。

我有这个 foreach 循环:

$i = 0;
foreach($ingredients as $ingredient) {

$ingredient_id = getIngredientId ($link, $ingredient);

if($ingredient_id != false) {
    insertRecipeIngredient($link, $recipe_id, $ingredient_id, $unit, $amount);
} else {
    $ingredient_id = insertIngredient($link, $ingredient);
}
$i++;
}

我用它在我的数据库中插入配方和成分之间的连接(我想插入该成分的数量和单位):

function insertRecipeIngredient($link, $recipe_id, $ingredient_id) {
mysqli_query($link, "INSERT INTO recipe_ingredients (recipe_id, ingredient_id, unit,
amount) VALUES ('$recipe_id','$ingredient_id', '$unit[$i]', '$amount[$i]'")); }

它表示未定义变量(单位和数量)。我试图在 foreach 循环中回显整个内容并且它起作用了。所以我猜想带有 [$i] 的扩展名是对的,但我不知道如何将它用于 INPUT。

echo $amount[$i].' '.$unit[$i].' - '.$ingredient;

因此配方(id)和成分(id)之间的连接工作正常,但数量和单位不想进入数据库。

我想如何将这些数组插入数据库?

您需要更多信息吗?

【问题讨论】:

  • $unit 来自哪里?您没有将它作为参数传递给您的函数。
  • 所有单位、数量、成分、配方信息等(如果来自表格)。所以 $unit = $_POST['unit'].你是这个意思吗?
  • 在您的 insertRecipeIngredient() 函数中,您没有将 $unit 作为参数传递,因此该函数不知道 $unit 是什么(除非您将其设置为全局)。就此而言,它也没有传入$i
  • ^^ 并插入循环是一个坏主意。仅连接并插入一次
  • Dagon,为什么插入循环不好?我怎么插入一个数组?

标签: php arrays mysqli foreach insert


【解决方案1】:

将您的 if 语句更改为:

if($ingredient_id != false) {
    insertRecipeIngredient($link, $recipe_id, $ingredient_id, $unit, $amount, $i);
}

并更改该函数以接受 $unit$amount$i 参数

function insertRecipeIngredient($link, $recipe_id, $ingredient_id, $unit, $amount, $i)

【讨论】:

  • 它会给你一个错误吗?如果有,和你之前提到的一样吗?
  • 是的,同样的错误。这是我的完整代码:tinypic.com/view.php?pic=a1lu7t&s=9#.VsZV8hjoq8g
  • 取出global $i,告诉我它的作用。
  • 哦,我忘了在截图之前把那个拿出来。它仍然是相同的错误消息。
  • 将查询的or die 部分更改为or die(mysqli_errror($link)),它应该会给你一个更具体的错误。
猜你喜欢
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-09
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多