Mysqli Wild Card Вставка с диапазоном данных - PullRequest
0 голосов
/ 18 марта 2020

У меня есть очень большие данные (не файл) для вставки в базу данных студентов. Будет очень сложно набрать каждый дюйм, l oop и вставить. Тем не менее, он следует заданному шаблону c и находится в диапазоне определенных c чисел.

Ниже приведен пример того, о чем я говорю.

Справочник студента Числа

Диапазон выборки: APS00001 - APS02000

Первые три символа являются постоянными. но остальные нет. Данные должны быть вставлены на основе заданного диапазона.

<?php mysqli_query($conn,"INSERT INTO table (reference) VALUES('each of the data in the sample range')"); ?>

Чтобы я мог сгенерировать последовательность, используя этот код

<?php
$array_items = array();

for ($i=0; $i <= 2000; $i++) { 
  $array_items[] .= $i;
}
print_r($array_items); // prints the sequence
?>

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

Вы должны использовать подготовленный оператор с привязкой параметра. Чтобы дополнить строку до заданной длины, используйте str_pad(). Вы можете добавить строку APS в PHP или SQL, используя CONCAT().

$sql = "INSERT INTO table (reference) VALUES(CONCAT('APS', ?))";
$stmt = $db->prepare($sql);
$stmt->bind_param('s', $value_to_be_inserted);

$array_items = array();
for ($i = 1; $i < 20; $i++) {
    $array_items[] .= +$i;

    $value_to_be_inserted = str_pad($i, 5, '0', STR_PAD_LEFT);
    $stmt->execute();
}

. Не готовить в l oop. Выполняйте только внутри l oop.

0 голосов
/ 18 марта 2020

Вот решение SQL вашей проблемы INSERT.

Запустите это значение до l oop от 1 до 2000. Он генерирует APS0001, дополняя число по мере поступления.

DELIMITER $$

DROP PROCEDURE IF EXISTS insert_data $$

CREATE PROCEDURE insert_data ()

BEGIN

DECLARE count INT DEFAULT 1;

WHILE count <= 2000 DO
    INSERT INTO `tbl1`(`col3`) VALUES(CONCAT("APS",LPAD(count, 4, '0')));
    SET count = count + 1;
END WHILE;

END $$

DELIMITER ;

CALL insert_data();

Поскольку исходное сообщение было обновлено, вот решение PHP:

<?php
// add $conn info

for ($i = 1; $i <= 2000; $i++) {
    $insdata = "APS" . str_pad($i, 5, "0", STR_PAD_LEFT);
    mysqli_query($conn,"INSERT INTO table (reference) VALUES('$insdata')");
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...