开发PHP系统过程中,对数据库(mysql)的访问操作绝对免不了。
今天来介绍一个简单的数据库工具类class.mysql.php。
首先我们要有一个配置文件,用来存放连接数据库的各种信息和一些基本信息。
于是有了config.inc.php
// 定义数据库服务器
define('DB_SERVER', "localhost");
// 定义数据库登录名
define('DB_USER', "root");
// 定义数据库登录密码
define('DB_PWD', null);
// 定义数据库名称
define('DB_DATABASE', "username_mydata");
/*
为了更高效的开发,推荐以下做法
1. 定义表的前缀
2. 用全局变量定义数据库表名
*/
define('TABLE_PRE', "stuot_");
define('TABLE_USERS', "users");
define('TABLE_NEWS', "news");
注:用全局变量定义数据库表名可以方便系统的维护,因为一旦需要修改表名,只需要修改定义的内容就全局可以应用了。
接下来,我们来使用轻盈快捷的数据库工具类class.mysql.php
首先在php文件头,我们需要初始化数据库
require("config.inc.php");
require("mysql.class.php"); // 这里定义文件名,看自己习惯吧
$db = new Database(DB_SERVER, DB_USER, DB_PWD, DB_DATABASE);
接下来介绍一下Mysql类
1. 变量
var $server = ""; //数据库服务器
var $user = ""; //数据库登录用户名
var $pass = ""; //数据库登录用户密码
var $database = ""; //数据库名称
var $pre = ""; //表前缀
var $error = ""; //错误信息
var $errno = 0; //错误代码
//SQL查询后影响的行数
var $affected_rows = 0;
var $link_id = 0;
var $query_id = 0;
2. 构造函数(php当中还是用“函数”比“方法”好)
function Mysql($server, $user, $pass, $database, $pre=''){
$this->server=$server;
$this->user=$user;
$this->pass=$pass;
$this->database=$database;
$this->pre=$pre;
}
3. 连接数据库函数connect($new_link=false)
当以connect(true)调用的时候,将强制要求建立一个新的link,哪怕是之前已经以同样的参数调用了mysql_connect()。
function connect($new_link=false) {
$this->link_id=@mysql_connect($this->server,$this->user,$this->pass,$new_link);
if (!$this->link_id) {//建立连接失败
$this->oops("Could not connect to server: <b>$this->server</b>.");
}
if(!@mysql_select_db($this->database, $this->link_id)) {//连接数据库失败
$this->oops("Could not open database: <b>$this->database</b>.");
}
// 回收变量
$this->server='';
$this->user='';
$this->pass='';
$this->database='';
}
洋人写东西就是好玩,oops函数是显示错误信息函数,将在下面介绍。
4. 获取所有结果
# Desc: 返回所有结果
# param: SQL SELECT语句
# returns: assoc array of ALL fetched results
function fetch_all_array($sql) {
$query_id = $this->query($sql);
$out = array();
while ($row = $this->fetch_array($query_id)){
$out[] = $row;
}
$this->free_result($query_id);
return $out;
}
PHP开发当中结果的分页显示免不了,这个工具类在这方面有待改进。
& PHP OOP?? SCREW U!!