Mar
21
如何写PHP网站install程序(二)
如果是在虚拟主机或者一个全新的服务器上安装软件,那么人家是不会帮你将数据库建好的。所以我们的install.php必须能够自动建立数据库。
一般,我们建立mysql数据库都是用phpmyadmin程序来建立的,但是我们不知道要安装的服务器上是否有phpmyadmin程序。怎么办?
你会说,用mysql客户端,链接服务器,然后建立,但是服务器上的mysql数据为了安全,一般也不开放从外部链接的权限,怎么办?
呵呵,我们在上一篇中已经得到了数据库的用户名,密码,地址,和管理员给我们的数据库名称了,我们可以利用这些资料,让install程序帮我们完成建立数据库。
接上一篇,install.php已经post过来了数据库的用户名,密码,地址。我们就可以链接mysql数据库了。
$conn = @mysql_connect($mysql_add,$mysql_user,$mysql_pass) or die("无法链接数据库: " . mysql_error());
if(@mysql_query("CREATE DATABASE ".$mysql_dbname." DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci")) {
echo "数据库:".$mysql_dbname." 建立 …… 成功<br>";
$state = 1; //这里为$state赋值一个变量1
}else{
echo "数据库:".$mysql_dbname." 建立 …… 失败(可能该数据库已经存在或无法链结数据库)<br>";
exit();
}
这段程序就是尝试用mysql_connect()函数来,链接数据库,如果链接成功,没有die掉的话,就直接运行mysql_query(sql语句)建立数据库;i138原创文章,由于比较粗糙,不能登大雅之堂,禁止转载
显然,如果建立链接成功,且建立数据库成功,我们就可以继续建立数据表了。
为了程序显得比较容易读懂,我建立了一个函数,负责建立数据表。
/*
创建数据表和数据函数.
*/
function CreateTable{
$sql=array();
$sql[] = "DROP TABLE IF EXISTS `user`;";
$sql[] = "CREATE TABLE IF NOT EXISTS `user` (
`Id` int(11) unsigned NOT NULL auto_increment,
`UserID` varchar(10) default NULL,
`Password` varchar(32) default NULL,
`UserNameCN` varchar(100) default NULL,
`CPNameCN` varchar(100) default NULL,
`question` int(1) default NULL,
`answer` varchar(250) default NULL,
`joindate` date default NULL,
`telphone` varchar(20) default NULL,
`fax` varchar(20) default NULL,
`email` varchar(50) default NULL,
PRIMARY KEY (`Id`),
UNIQUE KEY `userID` (`UserID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8";
$sql[]="INSERT INTO `user` VALUES (1,'admin','admin888','管理员','测试公司','密码提示问题','密码提示答案',now(),'0768-8888888','0768-6666666','i138@msn.com'),(2,'user','user','用户','测试公司','电脑品牌','HP',now(),'','','chaozhouren@msn.com');";
//这里基本都是建立数据表格和数据的sql语句,每一句赋值给$sql数组就可以了。
foreach($sql as $key => $val) {
if(!mysql_query($val)) {
die("导入数据失败:<br>query:<br>".$val);
}
}
Return true;
}
如果$sql数组的数据量比较大,这里最好是用foreache($sql as $key => $val)函数,别用while(list($key,$val)=each($sql))函数,因为while的执行效率和时间远远低于foreach函数。i138原创文章,由于比较粗糙,不能登大雅之堂,禁止转载
好,函数构建好,就该在执行了。且慢,且慢,上面第一个代码段只是建立了数据库,如果这时就建立数据表,那么程序肯定会报错。为什么?因为我们只是建立了数据库,但是没有选择这个库啊,mysql数据库是不知道你要在那里建立数据表,不报错才怪。
链接数据库:
if($stale==1){
@mysql_select_db($mysql_dbname) or die("无法链接数据库:".$mysql_dbname);
if(CreateTable()){
echo "数据表建立成功!";
$state =2; //给$state赋值,状态2
}
}
至此,我们的install程序已经初具雏形了。待续……
i138原创文章,由于比较粗糙,不能登大雅之堂,禁止转载
一般,我们建立mysql数据库都是用phpmyadmin程序来建立的,但是我们不知道要安装的服务器上是否有phpmyadmin程序。怎么办?
你会说,用mysql客户端,链接服务器,然后建立,但是服务器上的mysql数据为了安全,一般也不开放从外部链接的权限,怎么办?
呵呵,我们在上一篇中已经得到了数据库的用户名,密码,地址,和管理员给我们的数据库名称了,我们可以利用这些资料,让install程序帮我们完成建立数据库。
接上一篇,install.php已经post过来了数据库的用户名,密码,地址。我们就可以链接mysql数据库了。
$conn = @mysql_connect($mysql_add,$mysql_user,$mysql_pass) or die("无法链接数据库: " . mysql_error());
if(@mysql_query("CREATE DATABASE ".$mysql_dbname." DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci")) {
echo "数据库:".$mysql_dbname." 建立 …… 成功<br>";
$state = 1; //这里为$state赋值一个变量1
}else{
echo "数据库:".$mysql_dbname." 建立 …… 失败(可能该数据库已经存在或无法链结数据库)<br>";
exit();
}
这段程序就是尝试用mysql_connect()函数来,链接数据库,如果链接成功,没有die掉的话,就直接运行mysql_query(sql语句)建立数据库;i138原创文章,由于比较粗糙,不能登大雅之堂,禁止转载
显然,如果建立链接成功,且建立数据库成功,我们就可以继续建立数据表了。
为了程序显得比较容易读懂,我建立了一个函数,负责建立数据表。
/*
创建数据表和数据函数.
*/
function CreateTable{
$sql=array();
$sql[] = "DROP TABLE IF EXISTS `user`;";
$sql[] = "CREATE TABLE IF NOT EXISTS `user` (
`Id` int(11) unsigned NOT NULL auto_increment,
`UserID` varchar(10) default NULL,
`Password` varchar(32) default NULL,
`UserNameCN` varchar(100) default NULL,
`CPNameCN` varchar(100) default NULL,
`question` int(1) default NULL,
`answer` varchar(250) default NULL,
`joindate` date default NULL,
`telphone` varchar(20) default NULL,
`fax` varchar(20) default NULL,
`email` varchar(50) default NULL,
PRIMARY KEY (`Id`),
UNIQUE KEY `userID` (`UserID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8";
$sql[]="INSERT INTO `user` VALUES (1,'admin','admin888','管理员','测试公司','密码提示问题','密码提示答案',now(),'0768-8888888','0768-6666666','i138@msn.com'),(2,'user','user','用户','测试公司','电脑品牌','HP',now(),'','','chaozhouren@msn.com');";
//这里基本都是建立数据表格和数据的sql语句,每一句赋值给$sql数组就可以了。
foreach($sql as $key => $val) {
if(!mysql_query($val)) {
die("导入数据失败:<br>query:<br>".$val);
}
}
Return true;
}
如果$sql数组的数据量比较大,这里最好是用foreache($sql as $key => $val)函数,别用while(list($key,$val)=each($sql))函数,因为while的执行效率和时间远远低于foreach函数。i138原创文章,由于比较粗糙,不能登大雅之堂,禁止转载
好,函数构建好,就该在执行了。且慢,且慢,上面第一个代码段只是建立了数据库,如果这时就建立数据表,那么程序肯定会报错。为什么?因为我们只是建立了数据库,但是没有选择这个库啊,mysql数据库是不知道你要在那里建立数据表,不报错才怪。
链接数据库:
if($stale==1){
@mysql_select_db($mysql_dbname) or die("无法链接数据库:".$mysql_dbname);
if(CreateTable()){
echo "数据表建立成功!";
$state =2; //给$state赋值,状态2
}
}
至此,我们的install程序已经初具雏形了。待续……
i138原创文章,由于比较粗糙,不能登大雅之堂,禁止转载
自我价值取向测试结果
《越狱》经典台词 
