Chinaz.com - 中国站长站

匿名投稿 投稿指南 RSS订阅 站长资讯通告:
搜索: 您的位置主页>精华转载>技术专题>阅读资讯:如何制作自创PHPWind程序的数据库安装文件

如何制作自创PHPWind程序的数据库安装文件

2007-07-25 14:50:49 来源:PHPWind中文网 作者:霓虹陌路 【 评论:2

以5.3为例,以下为举例说明,并讲解各步骤含义

首先在新建一install.php文件,该文件将被作为数据库安装的运行文件

用记事本打开,并开始写入代码

行1:<?php

第一步按常规写上<?php标签

行2:define('R_P','./');

然后定义一个变量R_P,给它赋值,值为 ./  其作用将在下面说明

行3:include R_P.'data/sql_config.php';

然后将PW论坛的数据库信息加载到该安装中,以便调用数据,注意,这个时候就要用到行2的赋值了,变量加载到行3的时候,R_P.'data/sql_config.php' 等价于./data/sql_config.php 即用include函数调用根目录/data/sql_config.php文件,这样sql_config.php中的变量就可以应于该安装文件了,那么sq_config.php文件包含的变量应该怎么具体应用?看下一步。

行4:mysql_connect($dbhost, $dbuser, $dbpw) or die(mysql_error());

这步是应用mysql_connect函数(该函数是连接数据专用函数,程序调用数据必不可少的语句)来连接数据库,该函数后面接了3个变量,这3个变量就是第3行用include从sql_config.php文件调过来的变量.我们打开sql_config.php文件,就会发现$dbhost代表数据库所在的主机地址,如果不是调用的远程数据库的话,一般都为localhost,$dbuser为数据库用户,$dbpw为数据库对应用户的密码,这一下mysql_connect函数的格式就清晰多了,地址,用户,密码,分别用逗号切开,关于该函数的具体用法请下载开发学习区的数据库电子书查询,这个函数后面还接了 or 这一个带判断含意的连接词中文含义为"或者",or 的用法为连接前后两个执行语句,并且判断如果前一个语句执行不成功(即连接不上数据库),则会运行后面一个语句,后面一个语句为 die(mysql_error())  ,具体含义为 中断操作并返回数据库连接错误的讯息,其中的mysql_error()本身是一个函数,代表一个数据库错误的英文字符串,它还可以替换为中文,如将die语句替换为die("数据库操作失败!!<br>")也是可以的。

行5:mysql_select_db($dbname) or die(mysql_error());

这步也应用了mysql_select_db()函数,如果行4连接成功,这一行将选择数据库中名为 $dbname 的库,$dbname变量位于sql_config.php文件里面,也被行3加载了进来.如果该步执行不成功,即不存在名为$dbname库的话 or 后面连接的语句将运行,显示信息和行4一样。

行6:query("DROP TABLE IF EXISTS `pw_addmap`") or die("数据库操作失败!!<br>".mysql_error());

这步用了一个query函数,该函数不存在于任何PHP版本下,所以这个函数的功能需要自己定义,这个将在后面几步来讲解.DROP TABLE IF EXISTS `pw_addmap`该句为数据库操作语句,具体请看http://www.phpsql.net/read.php?tid-2881.html该贴,含义为如果存在$sql_addmap这一个表的话那么将删除这一个表, 注:本来应是pw_addmap这一个表,但是会被query函数替换为 $sql_addmap,$sql这个变量也是包含在sql_config.php文件中,query函数的目的是将自建的表的前缀和你安装论坛时设定和表前缀相同化。

行7-行15

query("CREATE TABLE pw_addmap (
  uid mediumint(8) UNSIGNED NOT NULL ,
  name VARCHAR( 80 ) NOT NULL ,
  down VARCHAR( 100 ) NOT NULL ,
  way VARCHAR( 100 ) NOT NULL ,
  gif VARCHAR( 100 ) NOT NULL ,
  PRIMARY KEY ( uid )
) TYPE=MyISAM DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci
");

这几行即为开始创建$sql_addmap这一个表(CREATE TABLE ),行8至行12为为这个表创建字段,即该表的具体目录,以第1个字段名为uid为例,uid字段名,mediumint(8)表示该字段存放的数据类型为mediumint,后面的(8)为该字段的长度为8位,即最大可以存放到的数字为(99999999),UNSIGNED代表为无符号,即只能为正数,NOT NULL即说明该字段没有默认值,从0开始,各属性设定需用空格隔开,写完一行用逗号分离,一直到行12.行13为设定该表的索引目录为uid,即uid列存放的数据不能相同,如存了一个uid为7的行,就不能再用语句向该表内写入UID为7的各项数据了。

行14 为设定数据库默认类为MyISAM,关于数据库的类型请查看MYSQL手册,这里不做讲解,只以默认设定,DEFAULT CHARACTER SET语句为设定该表的默认安装语言,gbk 代表简体中文,COLLATE代表优先级别,后面的语言类型即为该安装数据程序优先考虑要写入的语言类型。

行16:echo'数据库更新已完成!';

即如果以上各语句成功完成的话即在屏幕上显示'数据库更新已完成!',echo为屏幕输出函数。

行17-行21

function query($sql){
        global $PW;
        $sql=str_replace('pw_',$PW,$sql);
        return mysql_query($sql);
}

大家可能忘了,上面一直提到query这一个函数,但是这个函数如果没有定义的话是不能正常使用的,所以这几行为定义query函数的作用,关于函数定义在http://www.phpsql.net/read.php?tid-2839-fpage-2.html有讲解,行18代表将变量$pw包含进来需要用到,$pw变量被行3载入.
行19含义为将行6行7这些语句中包含有pw_的字符都用$pw来替换,保持表前缀一致.并将替换后的语句赋值给$sql,然后用return来设定query函数的返回值,即mysql_query($sql);例如有了这个函数,行6-query("DROP TABLE IF EXISTS `pw_addmap`") 其实就等价于mysql_query("DROP TABLE IF EXISTS `$pw_addmap`") ,mysql_query为数据库操作函数

最后到这儿整个代码就写到尾声了,但最后别忘了加上结束标示符,即行22。

行22:?>

结束标示,表示代码写入完毕。

这样上面数行联系起来,完整代码应为如下:

Copy code
<?php
define('R_P','./');
include R_P.'data/sql_config.php';
mysql_connect($dbhost, $dbuser, $dbpw) or die(mysql_error());
mysql_select_db($dbname) or die(mysql_error());
query("DROP TABLE IF EXISTS `pw_addmap`") or die("数据库操作失败!!<br>".mysql_error());
query("CREATE TABLE pw_addmap (
  uid mediumint(8) UNSIGNED NOT NULL ,
  name VARCHAR( 80 ) NOT NULL ,
  down VARCHAR( 100 ) NOT NULL ,
  way VARCHAR( 100 ) NOT NULL ,
  gif VARCHAR( 100 ) NOT NULL ,
  PRIMARY KEY ( uid )
) TYPE=MyISAM DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci");
echo'数据库更新已完成!';
function query($sql){
        global $PW;
        $sql=str_replace('pw_',$PW,$sql);
        return mysql_query($sql);
}
?>


最后将该文件保存,并上传到根目录,最后运行即可。



Tags:自创   PHPWind   数据库  
责任编辑:阿小
  • 请文明参与讨论,禁止漫骂攻击。 用户名:新注册) 密码: 匿名:
    评论总数: [ 查看全部 ] 网友评论
    关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助