Многократная вставка MYSQLI с данными из массивов - PullRequest
0 голосов
/ 26 января 2020

Мне нужна помощь, чтобы понять это. Мне нужно запустить MYSQLI INSERT несколько раз и вставить массив данных формы.

Я получаю данные из формы с двумя динамическими значениями c, диапазоном дат и числом, которое вводится конечным пользователем. Мне нужно вставить это в таблицу в моей базе данных. Данные из массива secound необходимо вставлять во все дни первого массива.

Массив FIRST ARRAY ([0] => 2020/01/26 [1] => 2020/01/27 [2] => 2020/01/28 [3])

ВТОРОЙ Массив Array ([0] => 1 [1] => 2 [2] => 3 [3] =>)

Это то, что я ожидаю вставить в свою базу данных:

INSERT INTO MYTABLE ('bookingdate', 'squarenumber',) VALUES (2020/01/26,1)
INSERT INTO MYTABLE ('bookingdate', 'squarenumber',) VALUES (2020/01/26,2)
INSERT INTO MYTABLE ('bookingdate', 'squarenumber',) VALUES (2020/01/26,3)

INSERT INTO MYTABLE ('bookingdate', 'squarenumber',) VALUES (2020/01/27,1)
INSERT INTO MYTABLE ('bookingdate', 'squarenumber',) VALUES (2020/01/27,2)
INSERT INTO MYTABLE ('bookingdate', 'squarenumber',) VALUES (2020/01/27,3)

INSERT INTO MYTABLE ('bookingdate', 'squarenumber',) VALUES (2020/01/28,1)
INSERT INTO MYTABLE ('bookingdate', 'squarenumber',) VALUES (2020/01/28,2)
INSERT INTO MYTABLE ('bookingdate', 'squarenumber',) VALUES (2020/01/28,3)

Кто-нибудь может мне помочь? Для меня это немного сложно ...

FORM 
<div id="massbooking-form-wrapper">
    <div class="massbooking-form-select-squares-wrapper">
        <h2>Välj rutor på område:<br> <?php echo getAreaname($link, $sq_areas_id); ?></h2>
        <br><br>
        <form name="booking_form" id="booking_form" action="<?php echo $bookingHomeUrl;?>/modules/bookings/process-massbooking.php" method="post">
            <div class="form-group" >
                <label>Startdatum<label>
                <input type="text" disabled name="booking_from_date_to_post"  class="form-control" value="<?php echo $booking_from_date?>">
            </div>
            <div class="form-group" >
                <label>Slutdatum<label>
                <input type="text" disabled  name="booking_to_date_to_post" class="form-control" value="<?php echo $booking_to_date?>">
            </div>
            <div class="form-group">
                <label>Rutor:</label>
                <input type="text" name="squarename_fill" id="squarename_fill" class="form-control" value="">   
            </div>

            <input type="text" hidden name="booking_from_date_to_post" class="form-control" value="<?php echo $booking_from_date?>">
            <input type="text" hidden name="booking_to_date_to_post" class="form-control" value="<?php echo $booking_to_date?>">
            <div class="form-group">
                <input type="submit" class="btn btn-success" onclick="return submitBookingConfirm()" value="Boka">
                <a class="btn btn-warning float-right" href="<?php echo $bookingHomeUrl;?>/welcome.php">Avbryt</a>
                <input type="reset" class="btn btn-default float-right" value="Rensa allt.">
            </div>
        </form>
    </div> 
</div>

    Getting all the dates in the span 

        function getDatesFromRange($start, $end, $format = 'Y/m/d') {
        /**
         * Generate an array of string dates between 2 dates
         */
            $array = array();
            $interval = new DateInterval('P1D');

            $realEnd = new DateTime($end);
            $realEnd->add($interval);

            $period = new DatePeriod(new DateTime($start), $interval, $realEnd);

            foreach($period as $date) { 
                $array[] = $date->format($format); 
            }
            return $array;
        }

    print_r (getDatesFromRange($booking_from_date_to_post, $booking_to_date_to_post));
    echo '<br>';echo '<br>';

//Converting squares from string to array
$splitSquarename_fill = explode(',', $squarename_fill);
print_r($splitSquarename_fill);

1 Ответ

1 голос
/ 26 января 2020

Вы действительно не объяснили, с чем у вас проблема. Показанный вами SQL неверный синтаксис, поэтому я предполагаю, что вы боролись с правильным синтаксисом SQL. Оператор вставки в MySQLi для этого не сложен, все, что вам нужно сделать, это l oop для обоих массивов и выполнить инструкцию для каждого значения.

$stmt = $mysqli->prepare('INSERT INTO MYTABLE (bookingdate, squarenumber) VALUES(?,?)');
$stmt->bind_param('ss', $bookingdate, $squarenumber);
foreach ($array1 as $bookingdate) {
    foreach ($array2 as $squarenumber) {
        $stmt->execute();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...