вставка нескольких данных с помощью запроса mysql php

#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, упрощает выполнение этого типа операций.