#php #mysql #database
#php #mysql #База данных
Вопрос:
Я хочу загрузить оценки студентов.. итак, если я использую цикл для вставки нескольких студенческих оценок.
Это создает нагрузку на сервер?? потому что запрос выполняется несколько раз. Есть ли какой-либо другой способ вставить несколько данных без цикла.
<?php
$roll_no=$_POST['roll_no'];
$department=$_POST['department'];
$semester=$_POST['semester'];
if($course amp;amp; $department amp;amp; $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");
}
Комментарии:
1. Я бы посоветовал включить некоторый код в ваш вопрос. Таким образом, вы увеличите шансы получить ответ и уменьшите вероятность того, что ваш вопрос будет помечен и удален.
2. я добавил код … пожалуйста, проверьте .. я думаю, когда я добавляю 200 студентов одновременно .. используя цикл, он загружает сервер. Является ли их альтернативным способом?
Ответ №1:
Ну, вот решение
<?php
$roll_no=$_POST['roll_no'];
$lenght=count($roll_no);
$department=$_POST['department'];
$semester=$_POST['semester'];
if($course!="" amp;amp; $department!="" amp;amp; $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");
}
Ответ №2:
например, этот блок кода вы можете заменить своим собственным кодом.
INSERT INTO table (a,b) VALUES (1,2), (2,3), (3,4);
http://dev.mysql.com/doc/refman/5.5/en/insert.html
ИСПОЛЬЗОВАНИЕ LARAVEL
$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);
Ответ №3:
Да, вы можете вставить несколько строк в один оператор SQL, например:
insert into tbl (col1, col2)
values (row1_val1, row1_val2), (row2_val1, row2_val2) [...]
Значения для каждой строки заключены в круглые скобки и разделены запятой.
Использование API баз данных более высокого уровня, таких как propel, Laravel Eloquent, doctrine, упрощает выполнение этого типа операций.