Подтвердить что ты не робот

Вставить несколько строк с одним запросом MySQL

Я хочу написать script, с функцией для множественного запроса на вставку. позвольте мне объяснить это лучше.

У меня есть один вход quantity в форме html. и у меня есть запрос MySQL, чтобы вставить registered user в таблицу. поэтому я хочу, чтобы моя функция вставляла этот запрос в "количество" раз.

 mysql_query("INSERT INTO `pxlot` (realname,email,address,phone,status,regtime,ip) 
 VALUES ('$realname','$email','$address','$phone','0','$dateTime','$ip')")
 or die (mysql_error()); // Inserts the user.

Вставить это, например, 3 раза. Какие-либо предложения?

4b9b3361

Ответ 2

Вот несколько способов сделать это

INSERT INTO pxlot (realname,email,address,phone,status,regtime,ip) 
select '$realname','$email','$address','$phone','0','$dateTime','$ip' 
from SOMETABLEWITHTONSOFROWS LIMIT 3;

или

INSERT INTO pxlot (realname,email,address,phone,status,regtime,ip) 
select '$realname','$email','$address','$phone','0','$dateTime','$ip'
union all select '$realname','$email','$address','$phone','0','$dateTime','$ip'
union all select '$realname','$email','$address','$phone','0','$dateTime','$ip'

или

INSERT INTO pxlot (realname,email,address,phone,status,regtime,ip) 
values ('$realname','$email','$address','$phone','0','$dateTime','$ip')
,('$realname','$email','$address','$phone','0','$dateTime','$ip')
,('$realname','$email','$address','$phone','0','$dateTime','$ip')

Ответ 3

В большинстве случаев вставка нескольких записей с одним оператором Insert намного быстрее в MySQL, чем вставка записей с циклом for/for в PHP.

Предположим, что $column1 и $column2 представляют собой массивы с одинаковым размером, размещенные в форме html.

Вы можете создать свой запрос следующим образом:

<?php
    $query = 'INSERT INTO TABLE (`column1`, `column2`) VALUES ';
    $query_parts = array();
    for($x=0; $x<count($column1); $x++){
        $query_parts[] = "('" . $column1[$x] . "', '" . $column2[$x] . "')";
    }
    echo $query .= implode(',', $query_parts);
?>

Если данные отправляются для двух записей, запрос будет выглядеть следующим образом:

ВСТАВИТЬ В ТАБЛИЦУ (column1, column2) ЗНАЧЕНИЯ ( "данные", "данные" ), ( "данные", "данные" )

Ответ 4

Если вы хотите вставить несколько значений, скажем, из нескольких входов, которые имеют разные значения post, но та же самая таблица для вставки, а затем просто используйте:

mysql_query("INSERT INTO `table` (a,b,c,d,e,f,g) VALUES 
('$a','$b','$c','$d','$e','$f','$g'),
('$a','$b','$c','$d','$e','$f','$g'),
('$a','$b','$c','$d','$e','$f','$g')")
or die (mysql_error()); // Inserts 3 times in 3 different rows

Ответ 5

Используйте функцию ниже, чтобы вставить несколько строк в одном запросе

function multiple_insert($table, $fields = array(), $values = array(), $appendix = false, $ret = false) {

$query = 'INSERT INTO';
$query .= ' '' . $this->escape($table) . "'";

if (is_array($fields)) {
    $query .= ' (';
    $num = 0;
    foreach ($fields as $key => $value) {
        $query .= ' '' . $value . ''';
        $num++;
        if ($num != count($fields)) {
            $query .= ',';
        }
    }
    $query .= ' ) VALUES ';

    foreach ($values as $key => $value) {
        $query .= '(';
        foreach ($value as $key => $value) {
            $query .= "'" . $value . "'" . ',';
        }
        $query = rtrim($query, ',');
        $query .= '),';
    }

    $query = rtrim($query, ',');

    if ($appendix) {
        $query .= ' ' . $appendix;
    }
    if ($ret) {
        return $query;
    }

    $this->sql    = $query;
    $this->result = mysqli_query($this->mysql, $query);
    if (mysqli_error($this->mysql) != '') {
        $this->_error(mysqli_error($this->mysql));
        $this->result = null;
        return false;
    } else {
        return $this;
    }

}

}

и вот как вы будете использовать функцию

 $values_array = array(
         ['videoid1' , 'chneneid1' , 'descitpin1'] ,
         ['videoid2' , 'chneneid3' , 'descitpin3'] 

     );

     $table_columns = array('video_id' , 'channelId' , 'description');

     multiple_insert($table_name , $table_columns , $values_array );

Ответ 6

<?php   
$datas = ['1','2','3'];
$datas = ['1','2','3'];
foreach ($datas as $key => $data) {     
    $query_value[] = "('" . $data . "', '" . $datas[$key] . "')";       
}
echo $value_string = implode(",", $query_value);
?>

Ответ 7

Здесь я использовал forech для многострочной вставки.. Мой код в php и mysqli.. Моя первая страница - Add_timetable.php, она выглядит примерно так:Предварительный просмотр Add_timetable.php Предварительный просмотр результатов выглядит следующим образом..Предварительный просмотр результатов

Эта страница называется Add_timetable1.php   

foreach($_POST['days'] as $row=>$Days)
{include 'dbcon.php';
$s=mysqli_real_escape_string($conn,($_POST['cl']));
$n=mysqli_real_escape_string($conn,($_POST['di']));
$g=mysqli_real_escape_string($conn,($_POST['days'][$row]));
//echo $g[$i];
$a=mysqli_real_escape_string($conn,($_POST['p1'][$row]));
$b=mysqli_real_escape_string($conn,($_POST['p2'][$row]));
$c=mysqli_real_escape_string($conn,($_POST['p3'][$row]));
$d=mysqli_real_escape_string($conn,($_POST['p4'][$row]));
$e=mysqli_real_escape_string($conn,($_POST['p5'][$row]));

$ins=mysqli_query($conn,"select Timetable_Id from key_table");
while ($row=mysqli_fetch_assoc($ins))
                             {


          $att=$row['Timetable_Id']+1;      
          $_SESSION['pp']=$att;   

  }
 $ttid=$_SESSION['pp'];
 $ins1=mysqli_multi_query($conn,"insert into 
 tbl_timetable(T_Id,Class,Division,Days,period1,period2,period3,period4,period5) 
 values('$ttid','$s', '$n', '$g','$a','$b','$c','$d','$e')");

 $upd=mysqli_query($conn,"update Key_table set Timetable_Id ='$ttid'");
 //$ins2=mysqli_query($conn,"insert into tbl_login values('$u','$pas','Staff')");
 }
 ?>
   <script>
   alert("Timetable added successfully");
   window.location="Add_Timetable.php";
   </script>
   You can try this code i am it works correctly..