【问题标题】:PHP two arrays in mysqlmysql中的PHP两个数组
【发布时间】: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 中的每个值,您将迭代慈善列表。我建议重新考虑你的代码设计,你的代码是正确的,但它不是为你的用例设计的,祝你好运

标签: php mysql arrays insert


【解决方案1】:

试试这个:

for($i=0;$i<count($sockList);$i++){
 $sql = "INSERT INTO donor_sock(Donor_id, Sock_id, Charity_id)  VALUES('$donor', $sockList[$i],  $charityList[$i])";
 $conn->query($sql);
 echo "$sql";
 }

【讨论】:

  • 这适用于两个,但随后打印错误:注意:未定义的偏移量:2 in INSERT INTO donor_sock(Donor_id, Sock_id, Charity_id) VALUES('10', '3', '') 注意:未定义的偏移量:当我输入 4 个选择袜子时,INSERT INTO donor_sock(Donor_id, Sock_id, Charity_id) VALUES('10', '4', '') 中的 3
  • $sockList ,$charityList 两个数组的大小必须相同,请确保,这意味着每个 sock_id 都应该有charity_id 然后它会起作用
  • 有没有办法复制charity_id 插入以填满表格的其余部分?
  • 那会是空白,可以吗?
  • 很遗憾没有,它必须填写,不能为空,你输入的肯定有效,不,它只需要复制
猜你喜欢
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 2010-09-30
相关资源
最近更新 更多