生无涯

吾生也有涯,而知也无涯,以无涯随有涯,乐以忘忧,生亦无涯矣www.cnblogs.com/shengwuya
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

数据库操作封装

Posted on 2011-11-18 20:06  生无涯  阅读(238)  评论(0编辑  收藏  举报
<?php
/**
*@desc: 数据库操作辅助文件,包括sql语句的构造、增删修查函数
*@author:JiaYusheng
*@time:01.10.2011
*/
include_once("inc/auth.php"); // 如需登录验证则包含,未登录将退出
include_once("inc/utility_all.php"); // 如需要使用公用函数

/**
*@desc: 查询表中的所有记录
*@param: 表名
*@return: 包含查询结果的记录数组
*/
function queryAll($table)
{
$sql = "select * from ".$table;
global $connection;
$result = exequery($connection,$sql);
$rows = array();
while($row = mysql_fetch_array($result))
{
$rows[] = $row;
}
return $rows;
}
/**
*@desc:依据$cloumns条件查询表$table
*@param: 表名,条件字段与值构成的数组,开始记录ID,每页显示记录数
*@return:查询所得的记录构成的数组
*/
function queryByPaging($table,$cloumns,$firstcount,$displaypg)
{
global $connection;
$sql = "select * from ".$table;
$sql .= getConditionClause($cloumns);
$sql .= " limit $firstcount,$displaypg";

$rows = array();
$result = exequery($connection,$sql);
while($row = mysql_fetch_array($result))
{
$rows[] = $row;
}
// echo $sql;
return $rows;
}
/**
*@desc:根据sql进行查询,并将查询结果用二维数组返回
*@param: sql
*@return:查询所得的记录构成的数组
*/
function query($sql)
{
global $connection;
$rows = array();
$result = exequery($connection,$sql);
while($row = mysql_fetch_array($result))
{
$rows[] = $row;
}
return $rows;
}
/*
*eg:

$sql="select * from $rtable where sid=$sid order by rid desc limit $firstcount,$displaypg";
$rows = query($sql);
*/


/**
*@desc:依据$cloumns条件查询表$table
*@param: 表名,条件字段与值构成的数组
*@return:查询所得的记录构成的数组
*/
function queryAllByCondtion($table,$cloumns)
{
$rows = array();
global $connection;
$sql = "select * from ".$table;
$sql .= getConditionClause($cloumns);

$rows = array();
$result = exequery($connection,$sql);
while($row = mysql_fetch_array($result))
{
$rows[] = $row;
}
//echo $sql;
return $rows;
}
/*
*eg:
$table = "xl_teacherinfo";
$cloumns = array(
// "teacherID" => "s201025006",
// "username" => "jinyong",
// "alias" => "xiaojin",
"gender" => "1",
// "role" => "4"
);
$rows = queryAllByCondtion($table,$cloumns);

foreach($rows as $row)
{
echo "username: ".$row['username']."<br>";
echo "teacherID: ".$row['teacherID']."<br>";
}
*/

/**
*@desc:查询表的某个字段
*@param:表名、字段名
*@return:包含查询结果的数组
*/
function queryCloumns($table,$arrCloumns,$arrCondition)
{
$sql = getColumns($arrCloumns);
$sql .= " from ".$table;
$sql .= getConditionClause($arrCondition);

$rows = array();
global $connection;
$result = exequery($connection,$sql);
$num_rows = mysql_num_rows($result);

//将结果保存到数组$rows中
$rows = array();
$result = exequery($connection,$sql);
while($row = mysql_fetch_array($result))
{
$rows[] = $row;
}
// echo $sql;
return $rows;

}
/*
*eg:
$table = "xl_teacherinfo";
$arrCondition= array(
"role" => 4,
"gender" => 1
);
$arrCloumns = array(
"teacherID",
"teachername",
"username"
);
echo queryCloumns($table,$arrCloumns,$arrCondition);
*/

/**
*@desc: 向表table的columns字段中插入值values
*@param: 表名,要插入记录的字段,字段值构成的数组
*@return: 包含查询结果的数组
*/
function insert($table,$cloumns)
{
$count = 0;
$sql = "insert into ".$table."(";
foreach($cloumns as $key => $value)
{
if(0==$count)
$sql .= $key;
else
$sql .= ",".$key;
$count++;
}
$sql .=") values(";

$count = 0;
foreach($cloumns as $key => $value)
{
if(0==$count)
{
if(is_string($value))
{
$sql .= "'".$value."'";
}
else
$sql .=$value;
}
else
{
if(is_string($value))
$sql .= ",'".$value."'";
else
$sql .= ",".$value;
}
$count++;
}
$sql .= ") ";
//echo $sql;//test@@@@
global $connection;
$result = exequery($connection,$sql);
$num_rows = mysql_affected_rows();
return $num_rows;
}
/*
*eg
$table = "xl_dict_role";
$cloumns = array(
"name" => "jys",
"serial" =>99
);
echo insert($table,$cloumns);
*/

/**
*@desc: 向表table的columns字段中插入值values
*@param: 表名,要插入记录的字段数组,字段值数组
*@return: 包含查询结果的数组
*/
function insertCV($table,$cloumns,$values)
{
$count = 0;
//update xl_dict_role(name,seiral) values('xinlilaoshi',10) where id = 1;
$sql = "insert into ".$table."(";
foreach($cloumns as $item)
{
if(0==$count)
$sql .= $item;
else
$sql .= ",".$item;
$count++;
}
$sql .=") values(";

$count = 0;
foreach($values as $item)
{
if(0==$count)
{
if(is_string($item))
{
$sql .= "'".$item."'";
}
else
$sql .=$item;
}
else
{
if(is_string($item))
$sql .= ",'".$item."'";
else
$sql .= ",".$item;
}
$count++;
}
$sql .= ") ";

global $connection;
$result = exequery($connection,$sql);
$num_rows = mysql_affected_rows();
return $num_rows;
}
/*
*eg $table = "xl_dict_role";
$cloumns = array("name","serial");
$values = array("xinlilaoshi",10);
echo insertCV($table,$cloumns,$values);
*/


/**
*@desc: 删除table中cloumn字段为value的记录
*@param: 表名,字段,字段值
*@return: 影响的记录数目
*/
function deleteByCloumn($table,$condCloumns)
{
$sql = "delete from ".$table;
//"where ".$cloumn."='".$value."'";
$sql .= getConditionClause($condCloumns);

global $connection;
$result = exequery($connection,$sql);
$num_rows = mysql_affected_rows();
return $num_rows;
}

/*
*eg
$delID = "7";
$table = "xl_teacherinfo";
$cloumns = array("tid"=>$delID);
echo deleteByCloumn($table,$cloumns);
*/

/**
*@desc: 修改table中condCloumn字段为condValue的记录,
*将cloumns字段修改为值values
*@param: 表名,被修改字段,被修改字段值,条件字段与条件字段值构造的数组
*@return: 影响的记录数目
*/
function update($table,$cloumns,$condCloumns)
{
$count = 0;
//update xl_dict_role(name,seiral) values('xinlilaoshi',10) where id = 1;
$sql = "update ".$table." set ";
foreach($cloumns as $key => $value)
{
if(0==$count)
{
if(is_string($value))
$sql .= $key."='".$value."'";
else
$sql .= $key."=".$value;
}
else
{
if(is_string($value))
$sql .= ",".$key."='".$value."'";
else
$sql .= ",".$key."=".$value;
}
$count++;
}

$sql .= getConditionClause($condCloumns);
//echo "<br>update sql: ".$sql."<br>";
global $connection;
$result = exequery($connection,$sql);
$num_rows = mysql_affected_rows();
return $num_rows;
}
/*
*eg
$table = "xl_dict_role";
$cloumns = array("name"=>"心理",
"serial"=>"88");
$condCloumns = array("id"=>11);
echo update($table,$cloumns,$condCloumns);
*/

/*
function update($table,$cloumns,$values,$condCloumns)
{
$count = 0;
//update xl_dict_role(name,seiral) values('xinlilaoshi',10) where id = 1;
$sql = "update ".$table;

$sql .= getConditionClause($condCloumns);

global $connection;
$result = exequery($connection,$sql);
$num_rows = mysql_num_rows($result);
return $num_rows;
}
*/

/*
*eg
$table = "xl_dict_role";
$cloumns = array("name","serial");
$values = array("xinlilaoshi",10);
$condCloumns = array("id"=>1);
echo update($table,$cloumns,$values,$condCloumns);
*/

/**
*@desc: 构造select 语句的被选择字段语句
*@param: 被选择字段的数组
*@return: "select clo1, clo2"
*/
function getColumns($arrCloumns)
{
$count = 0;
$sql = "select ";
foreach($arrCloumns as $item)
{
if(0==$count)
{
$sql .=$item;
}
else
{
$sql .=", ".$item;
}
$count++;
}
return $sql;
}
/*
*eg:
*
$arr = array('leo','jia');
//echo getColumns($arr);
*/

/**
*@desc:根据数组queryItems构造SQL语句中的AND条件子句
*@param:条件字段的数组
*@return:sql语句的条件语句
*/
function getConditionClause($queryItems)
{

$count = 0;
$where = "";
//根据数组,循环生成条件子句
foreach($queryItems as $key => $value)
{

if ($count == 0)
$where = " where ";
else
$where .= " and ";

//根据查询列的数据类型,决定是否加单引号
if(is_numeric($value))
{
$where .= $key."=".$value;
}
else if(!is_numeric($value))
{
$where .= $key." Like '%".$value."%'";
}
$count++;
}
return $where;
}
/*
*eg:
$arr1 = array("id" => 1);
echo getConditionClause($arr1);
*/

/**
*@desc:利用包含条件字段的数组构造条件子句
*@param:包含条件字段的数组,与还是或查询,取值={"and","or"}
*@return:条件子句
*/
function getConditionClauseByType($queryItems,$type)
{

$count = 0;
$where = "";

foreach($queryItems as $key => $value)
{

if ($count == 0)
$where = " where ";
else
$where .= " ".$type." ";

//根据查询列的数据类型,决定是否加单引号
if(is_numeric($value))
{
$where .= $key."=".$value;
}
else if(!is_numeric($value))
{
$where .= $key." Like '%".$value."%'";
}
$count++;
}
return $where;
}
?>