我正在从动态创建的输入字段创建一个数组,然后将数组发送到php,在php中我创建了一个foreach循环并尝试将其插入到我的数据库中。
我为我的数组创建了一个foreach循环,并在我的数据库中插入这样的值,但我的问题是:你不能将带索引号的变量绑定到查询字符串。我已经验证它是否实际上是我发送的数组,答案是:是的。这是一个数组。
$stmt = $conn->prepare('INSERT INTO vv(event_id, vvType, vvCosting) VALUES (?, ?, ?)');
foreach ($example as $index => $value) {
$stmt->bind_param('iss', $id, $example, $example_costs);
$id = $id;
$example = $value;
$example_costs = example_costs[$index]; //this DOES NOT work
$stmt->execute();
}
所以我想要的是:为我的$example
变量创建一个foreach循环,并根据索引号,它还插入变量example_costs
中的数据,并将其插入数据库中。您不应该担心我的example_costs
变量中的索引值是否存在,因为它们是“对”。
我知道问题是我不能像这样绑定我的变量:
$example_costs[$index]
所以现在我的问题是:如何像上面那样绑定我的变量?但在某种程度上php会接受吗?或者我需要创建2个foreach循环? - >我宁愿做的事。
你没有具体说明你的意思是“不工作”(即你没有描述出现了什么问题或者你看到的是什么行为),但这是我从代码中可以看到的:
1)你有(似乎是)一个错字:我希望example_costs[$index];
真的应该是$example_costs[$index];
。
2)假设1是固定的,你还要覆盖变量$example
和$example_costs
的值,这些是你试图循环的变量,而循环仍在继续。显然,这将破坏原始数组,并使它们无法在下次尝试循环时重复使用。
在这种情况下,作为良好编码实践的一般要点,不要重复使用变量名来代表代码中的两个不同的东西 - 特别是当你仍然在使用它们的原始目的时!
实际上,无论如何你都不需要在bind语句中使用这些单独的变量。这应该做的工作:
$stmt = $conn->prepare('INSERT INTO vv(event_id, vvType, vvCosting) VALUES (?, ?, ?)');
foreach ($example as $index => $value) {
$stmt->bind_param('iss', $id, $value, $example_costs[$index]);
$stmt->execute();
}
其余的要么不正确(例如覆盖$example
数组)要么冗余(例如$id = $id
) - 分配变量它自己的值就是无意义的定义。