@ART4

Массовое добавление записей в mysqli?

Добрый день, как сделать растусовать массив в форме имеющий .
При вводе в c новой строки - новая запись в базе mysqli.

Одними словами:
5e450805374ae262209322.jpeg

Как я понял массив в запросе идёт:
INSERT INTO tbl_name (id, code, expire, type, value, min_order_price, single, usages) VALUES(1, 2, 3, 4, 5, 6, 7, 8, 9), (1, 2, 3, 4, 5, 6, 7, 8, 9), (1, 2, 3, 4, 5, 6, 7, 8, 9);


Стоит и работает по отдельности заполнять:
if($this->request->post("new_code")){
                $new_expire = $this->request->post('new_expire');
                $new_coupon = new stdClass();
                $new_coupon->id = $this->request->post('new_id', 'integer');
                $new_coupon->code = $this->request->post('new_code', 'string');
                if(!empty($new_expire)) {
                    $new_coupon->expire = date('Y-m-d', strtotime($new_expire));
                } else {
                    $new_coupon->expire = null;
                }
                $new_coupon->value = $this->request->post('new_value', 'float');
                $new_coupon->type = $this->request->post('new_type', 'string');
                $new_coupon->min_order_price = $this->request->post('new_min_order_price', 'float');
                $new_coupon->single = $this->request->post('new_single', 'float');

                // Не допустить одинаковые URL разделов.
                if(($a = $this->coupons->get_coupon((string)$new_coupon->code)) && $a->id != $new_coupon->id) {
                    $this->design->assign('message_error', 'code_exists');
                } elseif(empty($new_coupon->code)) {
                    $this->design->assign('message_error', 'empty_code');
                } else {
                    $new_coupon->id = $this->coupons->add_coupon($new_coupon);
                    $new_coupon = $this->coupons->get_coupon($new_coupon->id);
                    $this->design->assign('message_success', 'added');
                }
            }


Сама отправка:
public function add_coupon($coupon) {
        if(empty($coupon->single)) {
            $coupon->single = 0;
        }
        $query = $this->db->placehold("INSERT INTO __coupons SET ?%", $coupon);
        
        if(!$this->db->query($query)) {
            return false;
        } else {
            return $this->db->insert_id();
        }
    }


Сама таблица
5e4509bd5f6aa172477808.jpeg
5e4509c68a5ab854667665.jpeg

Как можно сделать только отправлять массивом?
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
У тебя не mysqli, а какое-то кривое поделие.
А я покажу как это делать в mysqli

$data = [
    ['foo@example.com', password_hash('password1', PASSWORD_DEFAULT)],
    ['bar@example.com', password_hash('password2', PASSWORD_DEFAULT)],
];

$stmt = $mysqli->prepare("INSERT INTO users VALUES (null,?,?)");
$mysqli->begin_transaction();
foreach ($data as $row) {
    $stmt->bind_param("ss", ...$row);
    $stmt->execute();
}
$mysqli->commit();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы