我有一个非常大的数据(不是文件)要插入到学生的数据库中。键入它的每一英寸,循环并插入将非常困难。但是,它遵循特定的模式,并且在一系列特定的数字内。
下面是我在说的一个例子。
学生参考编号
示例范围: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
?>
谢谢您的帮助。能够使用以下代码完成此操作。 @Mech,解决方案非常有帮助。
<?php
$array_items = array();
for ($i=1; $i < 20; $i++) {
$array_items[] .=+$i;
}
foreach ($array_items as $key) {
$sql = "INSERT INTO table (reference) VALUES(CONCAT('APS',LPAD(?,?,?)))";
$stmt = $db->prepare($sql);
$pad_length = 4;
$pad_string = 0;
$stmt->bind_param('sii',$key,$pad_length,$pad_string);
$stmt->execute();
}
?>
这里是您的INSERT
问题的SQL解决方案。
运行此命令以从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')");
}
?>