以下PHP代码在POST中只有一组数组值时工作正常,即索引值为0 ...当索引值大于1时,重复的条目将被插入表中..请帮助...
$sql = "INSERT INTO js (s_name, s_age, s_marks, s_school) VALUES ";
foreach($_POST as $objResult)
{
$i = 0;
foreach($objResult as $Result){
$i++;
if($i>1)// add ',' after first set of values in INSERT..
{
$sql .= ",";
}
$name = $Result['sname'];
$age = $Result['age'];
$mark = $Result['mark'];
$school = $Result['school'];
$sql .= "('".$name."','" .$age."','".$mark."','" .$school."')";
$result=$conn->query($sql);
}}
答案 0 :(得分:1)
通过执行以下操作,您可以完全消除所有迭代的问题:
foreach($_POST as $objResult) {
foreach($objResult as $Result) {
$sql .= "(" . implode(', ', $Result) . "),";
}
}
$result=$conn->query($sql);
现在你注意到我是如何将查询移出你的循环的吗?这确保您正确运行它而不是每次迭代(循环)数据。
这是一个有效的Example
(您必须按ctrl
+ enter
才能运行代码)
答案 1 :(得分:0)
您需要移动
$result=$conn->query($sql);
离开内循环,你没有清除字符串,所以它会不断添加已添加的条目。
答案 2 :(得分:0)
感谢您的建议。我将代码更改为以下内容..
$sql = "INSERT INTO js (s_name, s_age, s_marks, s_school) VALUES ";
foreach($_POST['student'] as $Result)
{
$name = $Result['sname'];
$age = $Result['age'];
$mark = $Result['mark'];
$school = $Result['school'];
$sql .= "('".$name."','" .$age."','".$mark."','" .$school."'),";
}
$sql = rtrim($sql,",");
$result=$conn->query($sql);
答案 3 :(得分:0)
你可以改变这样的代码
foreach($_POST as $objResult) {
foreach($objResult as $Result) {
$sql .= "(" . implode(', ', $Result) . "),";
}
}
$result=$conn->query($sql);