<?php
/**************************************************************************************************
| 类名:databaseClass
| 功能描述:操作数据库。内有函数link_array(),equation_array(),insert(),update(),delete(),query()
| 初始化数据: $select(要操作的数据库名),$link(已经打开的一个数据库链接)
| 建立日期:2006-7-21
| 完成日期:
| 修改日期:
| 其他说明:
|
|**************************************************************************************************/ class databaseCortrol{ public $dataKeyList;
public $show;
public $result;
public $num_rows; function __construct($select,$link){
mssql_select_db($select);
$this->link=$link;
}
function __destruct(){
}
/**************************************************************************************************
| 函数名:link_array()
| 功能描述:将数组用特定的形式连接成字符串
| 输入参数: $arrayList(数组或单个变量),$partition(连接符),$headAdd,$trailAdd--各连接数头、尾添加符
| 返回值:return $string(返回修改后的字符串)
| 建立日期:2006-7-21
| 完成日期:
| 修改日期:
| 程序员:浪迹天涯/v
| 其他说明:
|
|**************************************************************************************************/
function link_array($arrayList,$partition,$headAdd="",$trailAdd=""){
if(is_array($arrayList)){
$num=count($arrayList);
for($i=;$i<$num-;$i++){
$string.=$headAdd.$arrayList[$i].$trailAdd.$partition;
}
$string.=$headAdd.$arrayList[$num-].$trailAdd;
return $string;
}else{
$string=$headAdd.$arrayList.$trailAdd;
return $string;
}
}
/**************************************************************************************************
| 函数名:equation_array()
| 功能描述:将两个数组或两个数按索引相等,并用特定的形式连接成字符串
| 输入参数: $arrayKey(数组或单个变量),$arrayValue(数组或单个变量),$partition(连接符),$headAdd,$trailAdd--各连接数头、尾添加符
| $equation,$valueHead,$valueTrial--作为update()函数调用时可省去后5位参数,使用默认值
| 返回值:return $string(返回修改后的字符串)
| 建立日期:2006-7-21
| 完成日期:
| 修改日期:
| 程序员:浪迹天涯/v
| 其他说明arrayKey数组与$arrayValue数组的个数不相等时,可能数据不完整
|
|**************************************************************************************************/
function equation_array($arrayKey,$arrayValue,$partition,$headAdd="",$trailAdd="",$equation="=",$valueHead="'",$valueTrail="'"){
$keyNum=count($arrayKey);
$valueNum=count($arrayValue);
$num=(($keyNum-$valueNum)>)?($valueNum):$keyNum;
if($num>){
for($i=;$i<$num-;$i++){
$string.=$headAdd.$arrayKey[$i].$equation.$valueHead.$arrayValue[$i].$valueTrail.$trailAdd.$partition;
}
$string.=$headAdd.$arrayKey[$num-].$equation.$valueHead.$arrayValue[$num-].$valueTrail.$trailAdd;
return $string;
}else if($num==){
$string=$headAdd.$arrayKey.$equation.$valueHead.$arrayValue.$valueTrail.$trailAdd;
return $string;
}else{
return false;
}
}
/**************************************************************************************************
| 函数名:array_insert()
| 功能描述:可将变量插入到数组的中指定位置(功能与系统函数array_splice()差不多.)如$array1=array_insert($array,2,"kk")
| 同于array_splice($array2,2,0,"kk"),两函数运行后$array1=$array2
| 输入参数:
| 返回值:return $string(返回修改后的数组)
| 建立日期:2006-8-9
| 完成日期:
| 修改日期:
| 程序员:浪迹天涯/v
| 其他说明:未完成2006-08-09
|
|**************************************************************************************************/
function array_insert($array,$serial,$instead){
if(is_array($serial)){
}else{
for($i=;$i<count($array);$i++){
if($i==$serial){
$tmp[$i]=$array[$i];
$array[$i]=$instead;
}else if($i>$serial){
$tmp[$i]=$array[$i];
$array[$i]=$tmp[$i-];
}
}
}
return $array;
}
/**************************************************************************************************
| 函数名:array_trim()
| 功能描述:将数组中各个单元分别去两头空格
| 输入参数: $array数组(支持多维数组及单个字符串);
| 返回值:return $array_trim(返回修改后的数组)
| 建立日期:2006-08-17
| 完成日期: 2006-08-17
| 修改日期: 2006-08-24(改进原来去多维数组空格时出错)
| 程序员:浪迹天涯/v
| 其他说明:
|
|**************************************************************************************************/
function array_trim($array){
if(is_array($array)){
foreach ($array as $key=>$value) {
if(is_array($value)){
$trim_key=trim($key);
$trim=$this->array_trim($value);
$array_trim[$trim_key]=$trim;
}else{
$trim_key=trim($key);
$trim=trim($value);
$array_trim[$trim_key]=$trim;
}
}
}else{
$array_trim=trim($array);
}
return $array_trim;
} /**************************************************************************************************
| 函数名:insert()
| 功能描述:对数据库数据表插入数据
| 输入参数data_table(数插入数据的表名)。
$data_file(数据插入的字段名。当$data_file="",时$data_value必须是带字段索引的字符串,即按字段索引来给对应的字段付值)。
$data_value(数据插入的值)。
$flag(是否引许$data_file与$data_value个数不等当$flag="1"时可以不等,但$data_value不能大于$data_file,若$data_value为带字段索引,字段索引须包含在$data_file中,若此时$data_file为空,则应包含在插入的表的字段中。当$flag="2"时,$data_value必须是带字段索引数组,$data_value可以大于$data_file,当有$data_value的索引不是有效字段时,忽略该数据.)。
$flag2(默为0自动去字段及键值两头空格,当$flag2=1时不去空格)。
| 返回值:返回插入数据影响记录的条数,若插入失败返回0
| 建立日期:2006-7-21
| 完成日期:
| 修改日期:2006-08-10
| 程序员:浪迹天涯/v
| 其他说明:当$data_file与$data_value个数不等时函数将
|
|**************************************************************************************************/
function insert($data_table,$data_file="",$data_value,$flag="",$flag2=""){
if($data_file==""){
//$qu_query="select Top 1 * from $data_table";//查询$data_table表第一行
//@$qu_result=mssql_query($qu_query) or die("插入数据时查寻列名时出错了!!!");
//$num_fields=mssql_num_fields($qu_result);//返回字段个数
//for($i=0;$i<$num_fields;$i++){
//$data_file[$i]=mssql_field_name($qu_result,$i);//取得表中的字段名,0表示取第一个字段名,1取第二个,以此类推
//echo mssql_field_type($qu_result,$i);
//}
$qu_query="select a.name from syscolumns a,systypes b where a.xtype=b.xtype and a.id=object_id('".$data_table."')";//查询表中的字段
$qu_query2="select a.name from syscolumns a,systypes b where a.xtype=b.xtype and a.id=object_id('".$data_table."') and COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1";//查询表中的自增量字段(由于不等于1时求出非自增量字段时索引乱了,只好用总字段-自增字段
@$qu_result=mssql_query($qu_query) or die("插入数据时查寻列名出错,请检查数据库类,或者尝试指定插入的字段名!!");
@$qu_result2=mssql_query($qu_query2) or die("插入数据时查寻列名出错,请检查数据库类,或者尝试指定插入的字段名!!");
$i=;
while($row=mssql_fetch_array($qu_result,MSSQL_ASSOC)){//用 MYSQL_ASSOC 只得到关联索引,如同 mysql_fetch_assoc()。
$tmpFile[$i]=$row[name];
$i++;
}
//print_r($tmpFile);
$j=;
while($row=mssql_fetch_array($qu_result2,MSSQL_ASSOC)){//用 MYSQL_ASSOC 只得到关联索引,如同 mysql_fetch_assoc()。
$tmpFile2[$j]=$row[name];
$j++;
}
$data_file=array_values(array_diff($tmpFile,$tmpFile2));
/**if($flag=="1"){
if(array_intersect($data_file,array_values($data_value))=array_values($data_value)){
}else{ }
} **/
}
$num_file=count($data_file);
$num_value=count($data_value);
if($flag=="" && $num_file!=$num_value){
if($flag=""){
}else{
if($num_file>$num_value){
$data_value=array_pad($data_value,$num_file,"");//在数组后面追加空值,使$data_file与$data_value相等
}else{
echo "出错了,你输入的值大于字段个数!!";
return false;
}
}
}else{
if($num_file!=$num_value){
echo "出错啦!!!insert对象第二个($data_file)及第三个参数($data_value)个数不相等!";
return false;
}
}
if($flag2!=""){
$data_file=$this->array_trim($data_file);
$data_value=$this->array_trim($data_value);
}
$file=$this->link_array($data_file,",");
$value=$this->link_array($data_value,",","'","'");
$query="insert into $data_table ($file)values($value);";
//echo $query;
@$result=mssql_query($query) or die ("保存数据时出错了!!!");
$num_chang= mssql_rows_affected($this->link);
@mssql_free_result($result);
return $num_chang;
}
/**************************************************************************************************
| 函数名:update()
| 功能描述:对数据库数据表更新数据
| 输入参数data_table(更新数据的表名),$data_file(数据更新的字段名),$data_value(数据更新的值),$data_check(数据更新条件),$flag2默为0自动去字段及键值两头空格,当$flag2=1时不去空格
| 返回值:返回更新数据影响记录的条数,若更新失败返回0
| 建立日期:2006-7-21
| 完成日期:
| 修改日期:
| 程序员:浪迹天涯/v
| 其他说明:
|
|**************************************************************************************************/
function update($data_table,$data_file,$data_value,$data_check="",$flag="",$flag2=""){
if($data_check!="" || $flag==""){
if(count($data_file)==count($data_value)){
if($flag2!=""){
$data_file=$this->array_trim($data_file);
$data_value=$this->array_trim($data_value);
}
$data_file_value=$this->equation_array($data_file,$data_value,",");
$queryUpate="UPDATE $data_table SET $data_file_value $data_check";
//echo $queryUpate;
@$resultUpate=mssql_query($queryUpate) or die("数据更新时出错了");
$num_chang= mssql_rows_affected($this->link);
return $num_chang;
}else{
echo "出错啦!!!update对象第二个($data_file)及第三个参数($data_value)个数不相等!";
return false;
}
}else{
echo "出错啦!!!当$data_check参数为空时,应当将$flag改为1才可以将所有数据进行修改";
}
}
/**************************************************************************************************
| 函数名:delete()
| 功能描述:对数据库数据表进行删除操作
| 输入参数:$data_table(删除数据的表名),$data_check(数据删除条件)
| 返回值:返回数据删除的条数,若删除失败返回0
| 建立日期:2006-7-21
| 完成日期:
| 修改日期:
| 程序员:浪迹天涯/v
| 其他说明:
|
|**************************************************************************************************/
function delete($data_table,$data_check="",$flag=""){
if($data_check!="" || $flag==""){
$queryDelete="DELETE from $data_table $data_check";
//echo $queryDelete;
@$result=mssql_query($queryDelete) or die("删除数据时出错了!!!");
$num_chang= mssql_rows_affected($this->link);
return $num_chang;
}else{
echo "出错啦!!!delete()函数$data_check为空时$flag应为1才可以删除所有数据";
}
}
/**************************************************************************************************
| 函数名:query()
| 功能描述:对数据库数据表进行查寻操作
| 输入参数:$data_table(查寻数据的表名),$data_file(查寻数据的字段名),$data_check(数据查寻条件),$dataKeyList(数据查寻后返回的数组索引规则,默认则等于$data_file,当$dataKeyList="autocoding"时,返回的字段键值为顺序序号,$flag2默为0自动去字段及键值两头空格,当$flag2=1时不去空格
| 返回值:返回数据查寻到的条数,但注意查寻文件不合条件或查寻失败都返回0
| 建立日期:2006-7-21
| 完成日期:
| 修改日期:
| 程序员:浪迹天涯/v
| 其他说明:
|
|**************************************************************************************************/
function query($data_table,$data_file="",$data_check="",$dataKeyList="",$flag2=""){
//global $select_count;
//global $show;
if($flag2!=""){
$data_file=$this->array_trim($data_file);
$dataKeyList=$this->array_trim($dataKeyList);
}
if($data_file=="")$data_file="*";
$file=$this->link_array($data_file,",");
//print_r($data_table);
$query="select $file from $data_table $data_check";
echo "sql 语句: ".$query."<br>";
@$result= mssql_query($query) or die("数据查寻时出错了!!!");
$this->result=@$result;
// @$res=mssql_fetch_array($result);
// $rownum = mysql_num_rows($result);
$num_rows = mssql_num_rows($result);//返回数据集行数
$num_fields=mssql_num_fields($result);//返回字段个数
if($num_rows>){
if($dataKeyList=="" && $data_file=="*"){
for($i=;$i<$num_fields;$i++){
$dataKeyList[$i]=mssql_field_name($result,$i);//取得表中的字段名,0表示取第一个字段名,1取第二个,以此类推
}
$data_file=$dataKeyList;
//$yy=mssql_fetch_field($result);
//print_r($yy->max_length);
//print_r($dataKeyList);
//echo "<br>";
}elseif($dataKeyList==""){
$dataKeyList=$data_file;
}elseif($dataKeyList=="autocoding"){
$dataKeyList=range(, conunt($data_file));
}
$file_count=count($data_file);
$file_count2=count($dataKeyList);
if($file_count<$file_count2 && $data_file!="*")$dataKeyList=$data_file;
$select_count=;
while($row=mssql_fetch_array($result,MSSQL_ASSOC)){//加MSSQL_ASSOC后不返回$row[0]等数字索引只得关联索引
for($i=;$i<$file_count2;$i++){ // echo "strncasecmp=".strncasecmp($dataKeyList[$i],"count(*)",8)."=<br>" ;
// if($dataKeyList[$i]=="count(*)" || strncasecmp($dataKeyList[$i],"count(*)",8)==0)
if(strlen($dataKeyList[$i])>&&(strncasecmp($dataKeyList[$i],"count(*)",)==||strncasecmp($dataKeyList[$i],"count(1)",)==))
{
$arrkey=explode(" ",$dataKeyList[$i]);
$show[$select_count][$dataKeyList[$i]]=$row[$arrkey[]];
}
elseif($dataKeyList[$i]=="count(*)"||$dataKeyList[$i]=="count(1)")
{
$show[$select_count][$dataKeyList[$i]]=$row["computed"];
}
else
{
$show[$select_count][$dataKeyList[$i]]=$row[$data_file[$i]];
}
}
if($file_count>$file_count2){
for($j=$i;$j<count($data_file);$j++){
$show[$select_count][$dataKeyList[$j]]=$row[$data_file[$j]];
}
}
$select_count++;
}/**
if(is_array($dataKeyList)){
}else{
$file_count=count($dataKeyList);
$select_count=0;
while($row=mssql_fetch_array($result,MSSQL_ASSOC)){
for($i=0;$i<$file_count;$i++){
$show[$select_count][$dataKeyList]=$row[$data_file[$i]];
}
$select_count++;
}
}**/
}
mssql_free_result($result);
if($flag2!= && $show!=""){
$show=$this->array_trim($show);
}
$this->dataKeyList=$dataKeyList;
$this->show=$show;
$this->select_count=$select_count;
$this->num_rows=$num_rows;
return $num_rows;
} function displayquery()
{ $dataKeyList=$this->dataKeyList; //fields name
$show=$this->show; //data value
$select_count=$this->select_count; // if ($show)
{ $output= "<p class='four'><table ><tr>";
foreach($dataKeyList as $field)
$output=$output."<p class='one'><td>".$field."</td></p>";
$output=$output."</tr>"; foreach($show as $k=>$val)
{//意思是for $book each $value( as )
$output=$output."<tr>";
if( is_array($val) )
foreach( $val as $value)
$output=$output. "<p class='four'><td> ".$value."</td></p>";
else
$output=$output. "<p class='one'><td>".$val."</td></p>";
$output=$output. "</tr>";
}
$output=$output. "</table></p>"; }else
{ $output="no result";
} echo $output; }
} ?>
<style type="text/css">
p.one
{
border-style: solid;
border-color: #0000ff
}
p.two
{
border-style: solid;
border-color: #ff0000 #0000ff
}
p.three
{
border-style: solid;
border-color: #ff0000 #00ff00 #0000ff
}
p.four
{
border-style: solid;
border-color: #ff0000 #00ff00 #0000ff rgb(,,)
}
</style>

php+mssql 已经写好的万能函数的更多相关文章

  1. 微信接口请求万能函数http_request

    关键字:http_request http_request post get http request原文: http://www.cnblogs.com/txw1958/p/http_request ...

  2. [C++] 用Xcode来写C++程序[5] 函数的重载与模板

    用Xcode来写C++程序[5] 函数的重载与模板 此节包括函数重载,隐式函数重载,函数模板,带参数函数模板 函数的重载 #include <iostream> using namespa ...

  3. [C++] 用Xcode来写C++程序[4] 函数

    用Xcode来写C++程序[4] 函数 此节包括引用函数,内联函数,防止修改函数入参,函数自身带有默认值. 引用函数:防止复制对象,减少系统开销 内联函数:编译的时候根据具体情形将代码嵌入进去,成不成 ...

  4. .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换

    .NET/C# 程序从 Main 函数开始执行,基本上各种书籍资料都是这么写的.不过,我们可以写多个 Main 函数,然后在项目文件中设置应该选择哪一个 Main 函数. 你可能会觉得这样没有什么用, ...

  5. 用Python写了一个postgresql函数,感觉很爽

    用Python写了一个postgresql函数,感觉很爽 CREATE LANGUAGE plpythonu; postgresql函数 CREATE OR REPLACE FUNCTION myfu ...

  6. 自己动手写个异步IO函数 --(基于 c# Task)

    前言    对于服务端,达到高性能.高扩展离不开异步.对于客户端,函数执行时间是1毫秒还是100毫秒差别不大,没必要为这一点点时间煞费苦心.对于异步,好多人还有误解,如: 异步就是多线程:异步就是如何 ...

  7. 五、React事件方法(自写一个方法(函数),然后用按钮onClick触发它、自写方法改变this指向3种写法、

    上接:https://www.cnblogs.com/chenxi188/p/11782349.html 项目目录: my-app/ README.md node_modules/ package.j ...

  8. 如何写一个Python万能装饰器,既可以装饰有参数的方法,也可以装饰无参数方法,或者有无返回值都可以装饰

    Python中的装饰器,可以有参数,可以有返回值,那么如何能让这个装饰器既可以装饰没有参数没有返回值的方法,又可以装饰有返回值或者有参数的方法呢?有一种万能装饰器,代码如下: def decorate ...

  9. Oracle结果集 (MSSQL存储过程写报表)

    接触SQL Server比较多,写报表是用存储过程实现. 对Oracle实现像MSSQL那样,还是有很多疑问

随机推荐

  1. C语言初学 if-else语句判断俩数的最大值

    #include<stdio.h> main() { float a,b; printf("输入俩个任意实数\n"); scanf("%f%f",& ...

  2. MySQL扩展

    一.使用MySQL特有的函数!        1>到年底还有几天            select datediff('2014-12-31','2014-6-21');//此函数用于计算日期 ...

  3. 简单工厂模式 - OK

    简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现. 使用场景: 工厂类负责创建的对象比较少: 客户只知道传 ...

  4. linux文件合并

    第一:两个文件的交集,并集前提条件:每个文件中不得有重复行1. 取出两个文件的并集(重复的行只保留一份)2. 取出两个文件的交集(只留下同时存在于两个文件中的文件)3. 删除交集,留下其他的行1. c ...

  5. url中的jsessionid解释

    (1) 这是一个保险措施 因为Session默认是需要Cookie支持的 但有些客户浏览器是关闭Cookie的 这个时候就需要在URL中指定服务器上的session标识,也就是5F4771183629 ...

  6. BZOJ1689: [Usaco2005 Open] Muddy roads

    1689: [Usaco2005 Open] Muddy roads Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 147  Solved: 107[Su ...

  7. HDU 4444 Walk (离散化建图+BFS+记忆化搜索) 绝对经典

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4444 题意:给你一些n个矩形,给你一个起点,一个终点,要你求从起点到终点最少需要转多少个弯 题解:因为 ...

  8. 专题笔记--Java 类集框架

    Java 类集框架 1. Java类集框架产生的原因 在基础的应用中,我们可以通过数组来保存一组对象或者基本数据,但数组的大小是不可更改的,因此出于灵活性的考虑和对空间价值的担忧,我们可以使用链表来实 ...

  9. hdu 5422 Rikka with Graph(简单题)

    Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...

  10. android 银行卡。。空格输入

    class myWatcher implements TextWatcher { int beforeTextLength = 0; int onTextLength = 0; boolean isC ...