用php在MySql中构建查询

用php在MySql中构建查询,php,mysql,mysqli,Php,Mysql,Mysqli,我使用以下循环向数据库中添加多个用户,但是它仅在表单中添加一个用户时有效 echo "The following names have been added to $cname<br><br>"; $query = ""; for ($i = 0; $i < count($fname); $i++) { $query = $query . "INSERT INTO Students (firstName, lastName, year, class, schoo

我使用以下循环向数据库中添加多个用户,但是它仅在表单中添加一个用户时有效

echo "The following names have been added to $cname<br><br>";
$query = "";
for ($i = 0; $i < count($fname); $i++) {
  $query = $query . "INSERT INTO Students (firstName, lastName, year, class, school, email) " 
  ." VALUES ('{$fname[$i]}','{$lname[$i]}','{$year}','{$cname}','{$sch}','{$uname[$i]}'); ";
  echo $fname[$i] . " " . $lname[$i] . " " . $uname[$i];
  }

if ($mysqli->query($query)) {
    $id = $mysqli->insert_id;
    error_log("Inserted {$firstname} as ID {$id}");
    return true;
} else {
    error_log("Problem inserting {$query}");
    return false;
}
echo“以下名称已添加到$cname

”; $query=“”; 对于($i=0;$iquery($query)){ $id=$mysqli->insert_id; 错误日志(“插入{$firstname}作为ID{$ID}”); 返回true; }否则{ 错误日志(“插入{$query}时出现问题”); 返回false; }
我只需要在每次迭代中添加
($mysqli->query($query)
),还是只需要在循环中移动'if'子句?还是有更好的方法


谢谢。

最好将if子句放入循环中。您尝试过吗?

此时您的查询正在尝试一次发送多个sql查询,但失败。您应该更改生成查询的方式:

$query = "INSERT INTO Students (firstName, lastName, year, class, school, email) VALUES ";
for ($i = 0; $i < count($fname); $i++) {
  $query .= $i>0 ? ',':'';
  $query .="('{$fname[$i]}','{$lname[$i]}','{$year}','{$cname}','{$sch}','{$uname[$i]}') ";
  echo $fname[$i] . " " . $lname[$i] . " " . $uname[$i];
}
$query=“插入学生(名字、姓氏、年份、班级、学校、电子邮件)值”;
对于($i=0;$i0?',':'';
$query.=“({$fname[$i]}'、{$lname[$i]}'、{$year}'、{$cname}'、{$sch}'、{$uname[$i]}'”;
回显$fname[$i]。“.$lname[$i]。”.$uname[$i];
}

您的echo结果是什么?以及如何向此php文件中输入值?echo为空,没有数据添加到数据库。“if”返回false,页面重定向到表单。如果表单中只输入一个名称,则它可以正常工作。您能很好地显示表单aas吗?最好在每个值元组后省去分号。这并不重要,您会这样做的必须“如果”它无论如何-否则它将在最后一个数据集后留下分号并失败。