数据库操作封装

本文提供了一套PHP数据库操作的实用方法,包括SQL语句构造、数据查询、增删改查等功能实现。通过具体示例介绍了如何高效地完成数据库交互任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?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;
}
?>

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值