【发布时间】:2017-08-14 21:16:13
【问题描述】:
好吧,基本上我有一个 sock_id 和一个charity_id,袜子有 4 个选项,慈善有 2 个选项。用户可以选择多个袜子和慈善机构,所以我现在拥有的是: sock_id = 1 1 2 2 3 3 4 4 慈善ID = 1 2 1 2 1 2 1 2 我想要的是: 袜子ID = 1 2 3 4 慈善机构 ID = 1 2 1 2 这是我的代码:
$sockList = $_POST['sock_list'];
$charityList = $_POST['charity'];
foreach($sockList as $s){
foreach($charityList as $c){
$sql = "INSERT INTO donor_sock(Donor_id, Sock_id, Charity_id) VALUES('$donor', '$s', '$c')";
$conn->query($sql);
echo "$sql";
}
}
输出:
INSERT INTO donor_sock(Donor_id, Sock_id, Charity_id) VALUES('8', '1','1')
INSERT INTO donor_sock(Donor_id, Sock_id, Charity_id) VALUES('8', '1', '2')
INSERT INTO donor_sock(Donor_id, Sock_id, Charity_id) VALUES('8', '2','1')
INSERT INTO donor_sock(Donor_id, Sock_id, Charity_id) VALUES('8', '2', '2')
这是表格的样子:
这就是我想要的:
如果您需要更多信息,请告诉我,但我知道问题出在这段代码中,我很确定这是一个 for 循环问题
【问题讨论】:
-
你能包含
echo "$sql";的输出吗? -
这个输出只是当用户选择 2 只袜子和两个图表时
-
您发布了一些代码,您可能希望我们修复它,甚至不告诉它有什么问题。
-
你对SQL Injections很开放,应该真正使用Prepared Statements而不是连接你的查询。特别是因为您根本没有逃避用户输入!
-
您正在使用嵌套循环,因此当然对于 sock_id 中的每个值,您将迭代慈善列表。我建议重新考虑你的代码设计,你的代码是正确的,但它不是为你的用例设计的,祝你好运。