如何使用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."')";
答案 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 .= ",";
}
}
}
现在应该使用生成的查询将值输入数据库。我希望你发现这很有帮助。任何其他查询都知道。干杯