使用ThinkPHP6写一个,可以随机生成20万中文昵称、时间戳、IP地址、姓名、身份证号码、手机号的程序,并且可以写入数据库

2023-04-05 23:011018

以下是一个使用ThinkPHP6生成随机数据并写入数据库的示例程序:

1.在命令行中使用Composer安装ThinkPHP6:2.创建一个控制器,例如RandomController.php:

composer create-project topthink/think tp6 --prefer-dist

2.创建一个控制器,例如RandomController.php:

<?php
namespace app\index\controller;

use think\Controller;
use think\Db;

class RandomController extends Controller
{
    public function index()
    {
        // 生成20万个随机数据
        $data = [];
        for($i = 0; $i < 200000; $i++){
            $data[] = [
                'nickname' => $this->generateNickname(),
                'timestamp' => $this->generateTimestamp(),
                'ip_address' => $this->generateIpAddress(),
                'name' => $this->generateName(),
                'id_number' => $this->generateIdNumber(),
                'phone_number' => $this->generatePhoneNumber(),
            ];
        }

        // 写入数据库
        Db::name('random_data')->insertAll($data);

        return '生成成功';
    }

    private function generateNickname()
    {
        // 生成一个3-10个汉字的昵称
        $length = mt_rand(3, 10);
        $name = '';
        for ($i = 0; $i < $length; $i++) {
            $name .= mb_chr(mt_rand(0x4E00, 0x9FA5));
        }
        return $name;
    }

    private function generateTimestamp()
    {
        // 生成一个随机的时间戳
        $timestamp = mt_rand(0, time());
        return date('Y-m-d H:i:s', $timestamp);
    }

    private function generateIpAddress()
    {
        // 生成一个随机的IPv4地址
        $ip = [];
        for($i = 0; $i < 4; $i++) {
            $ip[] = mt_rand(0, 255);
        }
        return implode('.', $ip);
    }

    private function generateName()
    {
        // 生成一个随机的中文姓名
        $surname = [
            '赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈',
            '楮', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许',
            '何', '吕', '施', '张', '孔', '曹', '严', '华', '金', '魏',
            '陶', '姜', '戚', '谢', '邹', '喻', '柏', '水', '窦', '章',
            '云', '苏', '潘', '葛', '奚', '范', '彭', '郎', '鲁', '韦',
            '昌', '马', '苗', '钟', '骆', '戴', '贾', '田', '堵', '储',
            '卢', '杜', '胡', '南宫', '欧阳', '夏侯', '诸葛', '皇甫',
            '司马', '公孙', '慕容', '长孙', '司徒', '轩辕', '令狐',
            '宇文', '司空', '鲜于', '闾丘', '东方', '子车', '呼延',
            '赫连', '司寇', '浦', '尚', '农', '温', '别', '庄', '晏',
            '柴', '瞿', '阎', '充', '慕', '连', '茹', '习', '宦',
            '艾', '鱼', '容', '向', '古', '易', '慎', '戈', '廖',
            '庾', '终', '暨', '居', '衡', '步', '都', '耿', '满',
            '弘', '匡', '文', '国', '寇', '广', '禄', '阙', '东',
            '欧', '殳', '沃', '利', '蔚', '越', '夔', '隆', '师',
            '巩', '厍', '聂', '晁', '勾', '敖', '融', '冷', '訾',
            '辛', '阚', '那', '简', '饶', '空', '曾', '毋', '沙',
            '乜', '养', '鞠', '须', '丰', '巢', '关', '蒯', '相',
            '查', '后', '荆', '红', '游', '竺', '权', '逯', '盖',
            '益', '桓', '公', '万', '俟', '司空'];
        $name = $surname[mt_rand(0, count($surname) - 1)];
        $length = mt_rand(1, 2);
        for($i = 0; $i < $length; $i++) {
            $name .= mb_chr(mt_rand(0x4E00, 0x9FA5));
        }
        return $name;
    }

    private function generateIdNumber()
    {
        // 生成一个随机的身份证号码
        $region = ['1101', '1201', '1301', '1401', '1501'];
        $year = mt_rand(1970, 2000);
        $month = str_pad(mt_rand(1, 12), 2, '0', STR_PAD_LEFT);
        $day = str_pad(mt_rand(1, 28), 2, '0', STR_PAD_LEFT); $suffix = str_pad(mt_rand(1, 9999), 4, '0', STR_PAD_LEFT); $id_number = $region[mt_rand(0, count($region) - 1)] . $year . $month . $day . $suffix; return $id_number;
    }
    private function generatePhoneNumber()
    {
        // 生成一个随机的手机号码
        $prefix = ['130', '131', '132', '133', '134', '135', '136', '137', '138', '139', '150', '151', '152', '153', '154', '155', '156', '157', '158', '159', '170', '176', '177', '178', '180', '181', '182', '183', '184', '185', '186', '187', '188', '189'];
        $number = $prefix[mt_rand(0, count($prefix) - 1)] . str_pad(mt_rand(0, 99999999), 8, '0', STR_PAD_LEFT);
        return $number;
    }
}

3.在config目录下的database.php中配置数据库连接信息:

<?php
return [    
// 数据库类型
    'type' => 'mysql',    // 服务器地址
    'hostname' => 'localhost',    // 数据库名
    'database' => 'test',    // 用户名
    'username' => 'root',    // 密码
    'password' => '',    // 端口
    'hostport' => '',    // 数据库连接参数
    'params' => [],    // 数据库编码默认采用utf8
    'charset' => 'utf8',    // 数据库表前缀
    'prefix' => '',    // 数据库调试模式
    'debug' => true,
];

4.在数据库中创建一个名为random_data的表:

CREATE TABLE `random_data` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `nickname` varchar(20) NOT NULL DEFAULT '' COMMENT '昵称',
  `timestamp` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '时间戳',
  `ip_address` varchar(15) NOT NULL DEFAULT '' COMMENT 'IP地址',
  `name` varchar(10) NOT NULL DEFAULT '' COMMENT '姓名',
  `id_number` varchar(18) NOT NULL DEFAULT '' COMMENT '身份证号码',
  `phone_number` varchar(11) NOT NULL DEFAULT '' COMMENT '手机号码',  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='随机数据表';


5.在浏览器中访问http://localhost/random/index即可生成随机数据并写入数据库。

注意:本示例程序仅供参考,实际应用中需要根据需求进行修改和完善。同时,为了保护个人隐私,生成的身份证号码和手机号码仅为随机


上一篇: thinkphp6中用with一对多查询hasMany,如何排序?

下一篇: 用ThinkPHP6,写一个生成一个3-10个汉字的昵称,不要生僻字,需要是常用字,并且有含义,是一个连贯的句子或者词组