使用php插入多行mysql

时间:2014-02-02 13:59:44

标签: php mysql sql arrays loops

如何使用php将多个数据插入mysql数据库。我尝试使用for循环,但没有运气。

//array of input boxes
$id1=array($aa1,$aa2,$aa3,$aa4,$aa5,$aa6,$aa7);
$timeRank1=array($a3,$a6,$a9,$a12,$a15,$a18,$a21);
for ($i = 0; $i < 7; $i++) {
require_once("connection.php");
$a = $id1[$i];
$b = $timeRank1[$i];
$sql = "INSERT INTO results (id,swim_rank)
VALUES ('".$a."','".$b."')";

3 个答案:

答案 0 :(得分:7)

只需在循环中构建查询,然后在循环竞争时执行它

require_once("connection.php");
$sql = "INSERT INTO results (id,swim_rank) VALUES ";
for ($i = 0; $i < 7; $i++) {
    $sql .= "('".$id1[$i]."','".$timeRank1[$i]."'),";
}
$sql = rtrim($sql, ',');
// run your query here

您还会注意到我将您的数据库连接的包含移到了循环之外。无需重复拨打电话。

此外,请确保您要么逃避插入的值,要么使用参数化查询来插入以防止SQL注入。

答案 1 :(得分:1)

希望超越John,获得积分)

详细说明John Conde's answer :(这里更容易以直观表示形式显示,而不是进一步评论),而且约翰说“我不能肯定地说,因为我不知道你正在使用什么API ......“

假设connection.php包含以下内容:

<?php
$DB_HOST = "xxx";
$DB_NAME = "xxx";
$DB_USER = "xxx";
$DB_PASS = "xxx";
$con = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if($con->connect_errno > 0) {
  die('Connection failed [' . $con->connect_error . ']');
}

查询:

<?php
require_once("connection.php");
$sql = "INSERT INTO results (id,swim_rank) VALUES ";
for ($i = 0; $i < 7; $i++) {
    $sql .= "('".$id1[$i]."','".$timeRank1[$i]."'),";
}
rtrim($sql, ',');
// run your query here

$result = mysqli_query($con, $sql); 
if ( false===$sql ) { 
printf("error: %s\n", mysqli_error($con)); 
}

答案 2 :(得分:0)

根据mysql参考指南,这里是如何使用单个insert语句插入多个值。

INSERT INTO人(姓名,年龄) VALUES( '威廉',25),( '巴特',15),( '玛丽',12);

即假设我们有一个名为people的表,其中包含列名和年龄。

现在,要将其转换为PHP,一个好方法是创建一个查询字符串。以下php代码创建了这样的字符串。

   $query_values = " INSERT INTO results (id,swim_rank) VALUES "; // notice space after VALUES

 if (count($id1) == count($timeRank1)) // ensure both arrays have equal number of elements
 {
    for ($i = 0; $i <= (count($id1) - 1); $i++) // remember array index starts from
    {
        $query_values .= "({$id1[$i]},{$timeRank1[$i]})"  ;
        if ($i != (count($id1) - 1)) // you dont want a trailing comma after your last bracket
        {
            $query_values .= ",";
        }
    }
  }

现在应该使用生成的查询将值输入数据库。我希望你发现这很有帮助。任何其他查询都知道。干杯