具有数据范围的Mysqli通配符插入

问题描述 投票:-1回答:1

我有一个非常大的数据(不是文件)要插入到学生的数据库中。键入它的每一英寸,循环并插入将非常困难。但是,它遵循特定的模式,并且在一系列特定的数字内。

下面是我在说的一个例子。

学生参考编号

示例范围: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();

}

?>
php mysqli wildcard
1个回答
0
投票

这里是您的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')");
}
?>
© www.soinside.com 2019 - 2024. All rights reserved.