引入关系:init.php > mysql.php > config.php
// init.php
<?php
// 魔术常量不受require,include的影响
// echo __DIR__, "<br/>";// C:\xampp\htdocs\QYFQ\lib
// echo dirname(__DIR__), "<br/>";// 当前目录的上一级
// echo __FILE__, "<br/>";// C:\xampp\htdocs\QYFQ\lib\init.php
// echo __LINE__;// 5
// 字符集
header('Content-type: text/html; charset=utf8');
define('ROOT', dirname(__DIR__));
// echo ROOT;
require(ROOT.'/lib/mysql.php');
?>
// mysql.php
<meta charset="utf8">
<?php
/**
* @return resource 连接成功,返回资源
*/
function mConn() {
// $cfg = require('./config.php');// 当被另一个目录引用后当前目录就变成了引用的目录,谁引用谁就是当前目录
// $cfg = require('./lib/config.php');
$cfg = require(ROOT.'/lib/config.php');
static $conn = null;
if($conn == null) {// 说明第一次调用
$conn = mysql_connect($cfg['host'], $cfg['user'], $cfg['pwd']);
mysql_query('use '.$cfg['db'], $conn);
mysql_query('set names '.$cfg['charset'], $conn);
}
return $conn;
}
/**
* 查询的函数
* @return mixed resource/Boolean
*/
function mQuery($sql) {
return mysql_query($sql, mConn());
}
/**
* select 查询多行数据
* @param str $sql select 待查询的sql语句
* @return mixed select 查询成功返回一个二维数组,失败返回Boolean false
*/
function mGetAll($sql) {
$rs = mQuery($sql);
if( !$rs ) {// false
return false;
}
$data = array();
while( $row=mysql_fetch_assoc($rs) ) {
$data[] = $row;
}
return $data;
}
// $sql = "select * from cat";
// print_r( mGetAll($sql) );
/**
* select 取出一行数据
* @param str $sql 待查询的sql语句
* @return arr/false 查询成功 返回一个一维数组
*/
function mGetRow($sql) {
$rs = mQuery($sql);
if( !$rs ) {
return false;
}
return mysql_fetch_assoc($rs);// 返回一行的数据就不用循环了
}
// $sql = "select * from cat where cat_id=3";
// print_r(mGetRow($sql));
/**
* select 查询返回一个结果
* @param str $sql 待查询的select语句
* @return mixed 成功,返回结果,失败返回Boolean false
*/
function mGetOne($sql) {
$rs = mQuery($sql);
if( !$rs ) {// false
return false;
}
return mysql_fetch_row($rs)[0];
}
// $sql = "select count(*) from art where cat_id=2";// cat_id 类目
// print_r(mGetOne($sql));
// insert into cat (id, catname) values ('6', 'test')
/**
* 自动拼接insert 和 update sql语句,并且调用mQuery()去执行 sql
* @param str $table 表名
* @param arr $data 接收到的数据是一维数组
* @param str $act 动作 默认为insert
* @param str $where 防止update更改时少加where条件
* @return Boolean insert or update success or faild
*/
function mExec($table, $data, $act='insert', $where=0) {
if($act == 'insert') {
// implode 数组转字符串
$sql = "insert into $table(";
$sql .= implode(',', array_keys($data)) . ") values ('";
$sql .= implode("','",array_values($data)) . "')";
return mQuery($sql);
}
else if($act == "update") {
$sql = "update $table set ";
foreach($data as $k => $v) {
$sql .= $k . "='" .$v . "',";
}
$sql = rtrim($sql, ',') . " where " . $where;// 去掉最后一个多余的逗号
// echo $sql;
return mQuery($sql);
}
}
$data = array('title' => '今天的空气', 'content' => '空气质量堪忧', 'pubtime' => 123456, 'author' => 'Aaayang');
// insert into art(title, content, pubtime, author) values ('今天的空气', '空气质量堪忧', '123456', 'Aaayang');
// update art set title='今天的空气', content='空气质量堪忧', pubtime='123456', author='Aaayang' where art_id=1;
// echo mExec('art', $data, 'update', "art_id=1");
/**
* 取得上一步insert操作产生的主键ID
*/
function getLastId() {
return mysql_insert_id(mConn());
}
?>
// config.php
<?php
return array(
'host' => 'localhost',
'user' => 'root',
'pwd' => '',
'db' => 'blog',
'charset' => 'utf8'
);
?>