首页 > 编程语言 >php实现一个简单的安装程序

php实现一个简单的安装程序

时间:2024-08-09 17:41:51浏览次数:11  
标签:VARCHAR exec 数据库 db 简单 安装程序 php

只是为了测试,具体可以参考其他开源软件的写法

原理都是动态创建数据库,导入基础sql,包含管理员信息。然后生成一个install.lock的文件,下次进来判断有这个文件,证明是安装过了

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>安装程序</title>
</head>
<body>
    <h1>安装程序</h1>
    <form action="install.php" method="post">
        <label for="dbHost">数据库主机:</label>
        <input type="text" id="dbHost" name="dbHost" required><br><br>
        <label for="dbHost">数据库端口:</label>
        <input type="number" id="dbPort" name="dbPort" required><br><br>
        <label for="dbName">数据库名:</label>
        <input type="text" id="dbName" name="dbName" required><br><br>
        <label for="dbUser">数据库用户:</label>
        <input type="text" id="dbUser" name="dbUser" required><br><br>
        <label for="dbPassword">数据库密码:</label>
        <input type="password" id="dbPassword" name="dbPassword"><br><br>

        <input type="submit" value="安装">
    </form>
</body>
</html>

php代码

<?php
$hostname = $_POST['dbHost'] ?? 'localhost';
$dbPort  =  $_POST['dbPort'] ?? 3306;
$username = $_POST['dbUser'] ?? '';
$password = $_POST['dbPassword'] ?? '';
$dbName = $dbName ?? '';

// 数据库连接 DSN
$dsn = "mysql:host=$hostname;port=$dbPort";

try {
    // 创建一个新的 PDO 实例
    $db = new PDO($dsn, $username, $password);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 动态创建数据库
    $createDbSql = "CREATE DATABASE IF NOT EXISTS `$dbName` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci";
    $db->exec($createDbSql);

    // 选择数据库
    $db->exec("USE `$dbName`");

    // 创建管理员表,根据需要插入数据,或者直接导入sql
    $createTableSql = "CREATE TABLE IF NOT EXISTS users (
        id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        username VARCHAR(30) NOT NULL,
        password VARCHAR(255) NOT NULL,
        email VARCHAR(50),
        reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    )";
    $db->exec($createTableSql);

    echo "安装成功,数据库和表已创建。";
} catch (PDOException $e) {
    $err = "安装失败: " . $e->getMessage();
    echo $err;
}
?>

标签:VARCHAR,exec,数据库,db,简单,安装程序,php
From: https://www.cnblogs.com/qcy-blog/p/18351125

相关文章

  • 支持S3协议的S3cmd工具简单使用
    本文分享自天翼云开发者社区《支持S3协议的S3cmd工具简单使用》,作者:付****健一:安装方法#wgethttp://nchc.dl.sourceforge.net/project/s3tools/s3cmd/1.0.0/s3cmd-1.0.0.tar.gz#tar-zxfs3cmd-1.0.0.tar.gz-C/usr/local/#mv/usr/local/s3cmd-1.0.0//usr/local......
  • Docker基本命令及容器数据卷的配置,Docker网卡的简单理解
    基本组成概念镜像(images):好比一个模板,可通过该模板来创建多个容器服务。容器(container):利用容器技术可以独立运行一个和一个组应用,使用镜像来创建,类似于实例化镜像。仓库(repository):存放镜像的地方。http://hub-mirror.c.163.comhttps://registry.docker-cn.comhttps:/......
  • php 使用phpoffice/phpword导出word
    安装指令composerrequirephpoffice/phpword 基本设置/***//设置常用文本样式*'size'=>12,//文字大小*'name'=>'宋体',//字体名称*'bold'=>true,//加粗*'italic'......
  • Neo4j 实现一个简单的CMDB管理平台
    简介Neo4j是一个高性能的图形数据库管理系统,它使用图形模型来存储和查询数据。图形数据库与传统的关系型数据库不同,它们使用节点和边来表示数据实体和它们之间的关系,而不是使用表格和行,可以使用neo4j实现权限系统,知识图谱,cmdb等部署dockerrun-d--name=neo4j\--publis......
  • PHP处理图片成指定大小的缩略图--简单封装的类
    <?PHP//图像处理类classImage{private$file;//图片地址private$width;//图片长度private$height;//图片长度private$type;//图片类型private$img;//原图的资源句柄private$new;//新图的资源句柄//构造方法,......
  • php+html5+ajax实现上传图片的方法
    test.php<?phpif(isset($_POST['upload'])){var_dump($_FILES);move_uploaded_file($_FILES['upfile']['tmp_name'],'up_tmp/'.time().'.dat');exit;}?>html<!doctypehtml><htmllang......
  • 回溯的简单辅助讲解
    回溯策略我个人其实把回溯看做递归的一个应用,回溯简单来讲就是用递归的方式深度遍历所有的可能,而在某些可能是一个解的时候,就记录,这目前看来和回溯两个字没啥关系,问题就在于,回溯可以解决一些需要我们回退元素并继续尝试的问题。刚才的概念里包含了两个关键词:“回退”,“尝试”。......
  • 简单理解H264编码
    参考帖子:https://blog.csdn.net/go_str/article/details/80340564?spm=1001.2014.3001.55020、序言:首先要弄明白编码的目的。当你此刻显示器正在播放一个视频,分辨率为1280*720,帧率为25,那么一秒所产生正常的数据大小为:1280*720(像素)*25(张)/8(1字节8位)(结果:B)/1024(结果:KB)/1024(结果:MB)=2.......
  • OpenTiny HUICharts开源发布,带你了解一个简单、易上手的图表组件库
    摘要:目前OpenTinyHUICharts已经成功落地在华为内部100多个产品中,持续提升了用户的可视化体验。本文分享自华为云社区《OpenTinyHUICharts正式开源发布,一个简单、易上手的图表组件库》,作者:OpenTiny。引言大家好!我们非常高兴地跟大家宣布,今天正式发布我们的新产品——Open......
  • PHP提升页面加载速度的技巧:打造高效Web应用
    本文由ChatMoney团队出品1.代码优化1.1减少复杂性简化PHP代码可以显著提升执行速度。避免过多的嵌套循环和条件判断,尽量使用内置函数代替自定义函数,因为内置函数通常经过高度优化。1.2函数调用优化频繁的函数调用会产生额外的开销。可以尝试将一些常用函数的调用替换为......