我想上传学生的分数。.因此,如果我使用循环插入多个学生的分数。
是服务器上的负载吗?因为查询执行多次。 有没有其他方法可以插入多个没有循环的数据。
<?php
$roll_no=$_POST['roll_no'];
$department=$_POST['department'];
$semester=$_POST['semester'];
if($course && $department && $semester)
{
foreach($roll_no as $c)
{
$q="INSERT INTO allocoursestudent(roll_no,department,semester) VALUES('$c','".$department[$c]."','"$semester[$c]"')";
if(mysqli_query($con,$q))
{
$response= "Data inserted";
}
}
echo($response);
}else
{
echo("Enter Data first");
}
有没有办法插入多个没有循环的数据?
答案 0 :(得分:2)
这是解决方法
<?php
$roll_no=$_POST['roll_no'];
$lenght=count($roll_no);
$department=$_POST['department'];
$semester=$_POST['semester'];
if($course!="" && $department!="" && $semester!="")
{
for($i=0;$i<$length;$i++)
{
$q="INSERT INTO allocoursestudent(roll_no,department,semester) values($roll_no[$i],$department[$i],$semester[$i])";
if(mysqli_query($con,$q))
{
$response= "Data inserted";
}else
{
$response= "Error";
}
}
echo($response);
}else
{
echo("Enter Data first");
}
答案 1 :(得分:0)
是的,您可以在单个SQL语句中插入多行,如下所示:
insert into tbl (col1, col2)
values (row1_val1, row1_val2), (row2_val1, row2_val2) [...]
每行的值都用括号括起来并用逗号分隔。
使用高级数据库API(例如propel,Laravel Eloquent,toctrine)使这种操作变得简单。
答案 2 :(得分:0)
例如,您可以用自己的代码替换此代码块。
INSERT INTO table (a,b) VALUES (1,2), (2,3), (3,4);
http://dev.mysql.com/doc/refman/5.5/en/insert.html
$codes = [];
for ($i = 0; $i < $count; $i++) {
$codes[$i]['code'] = $this->genUuid();
$codes[$i]['secret'] = uniqid();
$codes[$i]['day'] = request('day');
$codes[$i]['label'] = request('label');
$codes[$i]['state'] = 1;
$codes[$i]['created_at'] = Carbon::now();
$codes[$i]['updated_at'] = Carbon::now();
}
Code::insert($codes);