使用php在MySql中构建查询

时间:2014-04-02 06:33:51

标签: 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, 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;
}

我只需要在每次迭代中添加($mysqli->query($query)吗?或者只是移动&#39; if&#39;循环内的子句?或者有更好的方法。

谢谢。

2 个答案:

答案 0 :(得分:1)

当您的查询尝试一次发送多个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];
}

答案 1 :(得分:0)

最好把if子句放在循环中。你试过吗?