当我们写了一个网站程序想分享给别人一起使用时,通常我们都会把数据库表的结构、表的初始化数据导出来,以方便他人导入数据库。但为何我们不写个安装程序,只要填写了主机,连接数据库的用户名跟密码、要创建的数据库名,程序就会帮我们创建数据库、表、初始化表的数据。所以写安装程序主要出于两个目的:第一个是方便自己移植自己的网站,第二个就是方便别人使用你的程序。下面就简单介绍一下php安装程序的基本原理。
简单步骤如下:
1、写一个form表单供用户填写主机名$host,连接数据库的用户名$user跟密码$password,要创建的数据库名$dbname。
2、将获得表单的数据写入一个配置文件config.php,以方便其它文件来调用数据库的信息。
3、调用配置文件include_once("config.php"),写程序进行数据库的连接,创建数据库、创建表、初始化表的数据。
ok,首先开始第一步
[xhtml] view plaincopyprint?
<form action="install.php" method="post">
填写主机:<input type="text" name="host">本地主机为localhost<br />
连接数据库的用户名:<input type="text" name="user"><br />
连接数据库的密码:<input type="text" name="password"><br />
要创建的数据库名:<input type="text" name="dbname"><br />
<input type="submit" name="install" value="安装">
</form>
<form action="install.php" method="post"> 填写主机:<input type="text" name="host">本地主机为localhost<br /> 连接数据库的用户名:<input type="text" name="user"><br /> 连接数据库的密码:<input type="text" name="password"><br /> 要创建的数据库名:<input type="text" name="dbname"><br /> <input type="submit" name="install" value="安装"> </form>
2、将获得表单的数据写入一个配置文件config.php,以方便其它文件来调用数据库的信息。
[php] view plaincopyprint?
<?php
header("Content-type:text/html;charset=gb2312") //看你用的是什么编码,要保持一致。
$files="config.php"; //要写入的配置文件。
if(!is_writable($files)){ //判断是否有可写的权限,linux操作系统要注意这一点,windows不必注意。
echo "<font color=red>文件不可写</font>";
exit();
}
if($_POST['install']){ //获取用户提交的数据。
$host=$_POST['host'];
$user=$_POST['user'];
$password=$_POST['password'];
$dbname=$_POST['dbname'];
$config="<?php "; //$config的内容就是要写入配置文件的内容。
$config.="/n"; // /n是用来换行的。
$config.="/$host='".$host."';";
$config.="/n";
$config.="/$user='".$user."';";
$config.="/n";
$config.="/$password='".$password."';";
$config.="/n";
$config.="/$dbname='".$dbname."';";
$config.="/n";
$config.="?>";
$file = fopen($files, "w"); //以写入的方式打开config.php这个文件。
fwrite($file,$config); //将配置信息写入config.php文件。
fclose($file);
}
?>
<?php header("Content-type:text/html;charset=gb2312") //看你用的是什么编码,要保持一致。 $files="config.php"; //要写入的配置文件。 if(!is_writable($files)){ //判断是否有可写的权限,linux操作系统要注意这一点,windows不必注意。 echo "<font color=red>文件不可写</font>"; exit(); } if($_POST['install']){ //获取用户提交的数据。 $host=$_POST['host']; $user=$_POST['user']; $password=$_POST['password']; $dbname=$_POST['dbname']; $config="<?php "; //$config的内容就是要写入配置文件的内容。 $config.="/n"; // /n是用来换行的。 $config.="/$host='".$host."';"; $config.="/n"; $config.="/$user='".$user."';"; $config.="/n"; $config.="/$password='".$password."';"; $config.="/n"; $config.="/$dbname='".$dbname."';"; $config.="/n"; $config.="?>"; $file = fopen($files, "w"); //以写入的方式打开config.php这个文件。 fwrite($file,$config); //将配置信息写入config.php文件。 fclose($file); } ?>
3、调用配置文件include_once("config.php"),写程序进行数据库的连接,创建数据库、创建表、初始化表的数据。
[php] view plaincopyprint?
<?php
include_once("config.php"); //导入配置信息.
if(!$conn=@mysql_connect($host,$user,$password)){
echo "连接数据库失败!请返回上一页检查连接参数 <a href="javascript:history.go(-1)" mce_href="javascript:history.go(-1)"><font color=#ff0000>返回修改</font></a>";
exit();
}else{
mysql_query("set names gb2312"); //设置数据库的编码,注意要与前面一致。
if(!mysql_select_db($dbname,$conn)){ //如果数据库不存在,我们就进行创建。
$dbsql="CREATE DATABASE `$dbname`";
if(!mysql_query($dbsql)){
echo "创建数据库失败,请确认是否有足够的权限!<a href="javascript:history.go(-1)" mce_href="javascript:history.go(-1)"><font color=#ff0000>返回修改</font></a>";
exit();
}
}
//下面根据你实际的表的结构跟初始化表的数据来写,这些sql语句,我们在导出时可以找到。
//新建一个表test1
$sql_query[] = "CREATE TABLE `test1` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(20) character set gb2312 NOT NULL,
`major` varchar(40) character set gb2312 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312 AUTO_INCREMENT=1;";
//新建一个表test2
$sql_query[] = "CREATE TABLE `test2` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(20) character set gb2312 NOT NULL,
`major` varchar(40) character set gb2312 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312 AUTO_INCREMENT=1;";
//为test1表默认初始化一些数据。
$sql_query[]="INSERT INTO `test1` (`name`, `major`) VALUES('张三','电子商务')";
foreach($sql_query as $sql){
if(!mysql_query($sql)){ //依次执行以上的sql语句,就是创建表和初始化数据。
echo "创建表失败或者初始化数据失败";
exit();
}
}
mysql_close();
echo "安装成功";//可以做一个跳转到首页。
exit();
}
?>
<?php include_once("config.php"); //导入配置信息. if(!$conn=@mysql_connect($host,$user,$password)){ echo "连接数据库失败!请返回上一页检查连接参数 <a href="javascript:history.go(-1)" mce_href="javascript:history.go(-1)"><font color=#ff0000>返回修改</font></a>"; exit(); }else{ mysql_query("set names gb2312"); //设置数据库的编码,注意要与前面一致。 if(!mysql_select_db($dbname,$conn)){ //如果数据库不存在,我们就进行创建。 $dbsql="CREATE DATABASE `$dbname`"; if(!mysql_query($dbsql)){ echo "创建数据库失败,请确认是否有足够的权限!<a href="javascript:history.go(-1)" mce_href="javascript:history.go(-1)"><font color=#ff0000>返回修改</font></a>"; exit(); } } //下面根据你实际的表的结构跟初始化表的数据来写,这些sql语句,我们在导出时可以找到。 //新建一个表test1 $sql_query[] = "CREATE TABLE `test1` ( `id` int(4) NOT NULL auto_increment, `name` varchar(20) character set gb2312 NOT NULL, `major` varchar(40) character set gb2312 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 AUTO_INCREMENT=1;"; //新建一个表test2 $sql_query[] = "CREATE TABLE `test2` ( `id` int(4) NOT NULL auto_increment, `name` varchar(20) character set gb2312 NOT NULL, `major` varchar(40) character set gb2312 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 AUTO_INCREMENT=1;"; //为test1表默认初始化一些数据。 $sql_query[]="INSERT INTO `test1` (`name`, `major`) VALUES('张三','电子商务')"; foreach($sql_query as $sql){ if(!mysql_query($sql)){ //依次执行以上的sql语句,就是创建表和初始化数据。 echo "创建表失败或者初始化数据失败"; exit(); } } mysql_close(); echo "安装成功";//可以做一个跳转到首页。 exit(); } ?>
有人或许为问,直接把表单提交的数据来进行安装不就可以了,为什么还要写入配置信息文件呢,这个是因为为了方便其它要使用到数据库的文件来连接数据库。
转自:http://blog.csdn.net/dongsg11200/article/details/5598874