php+mssql 已经写好的万能函数
<?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 已经写好的万能函数的更多相关文章
- 微信接口请求万能函数http_request
关键字:http_request http_request post get http request原文: http://www.cnblogs.com/txw1958/p/http_request ...
- [C++] 用Xcode来写C++程序[5] 函数的重载与模板
用Xcode来写C++程序[5] 函数的重载与模板 此节包括函数重载,隐式函数重载,函数模板,带参数函数模板 函数的重载 #include <iostream> using namespa ...
- [C++] 用Xcode来写C++程序[4] 函数
用Xcode来写C++程序[4] 函数 此节包括引用函数,内联函数,防止修改函数入参,函数自身带有默认值. 引用函数:防止复制对象,减少系统开销 内联函数:编译的时候根据具体情形将代码嵌入进去,成不成 ...
- .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
.NET/C# 程序从 Main 函数开始执行,基本上各种书籍资料都是这么写的.不过,我们可以写多个 Main 函数,然后在项目文件中设置应该选择哪一个 Main 函数. 你可能会觉得这样没有什么用, ...
- 用Python写了一个postgresql函数,感觉很爽
用Python写了一个postgresql函数,感觉很爽 CREATE LANGUAGE plpythonu; postgresql函数 CREATE OR REPLACE FUNCTION myfu ...
- 自己动手写个异步IO函数 --(基于 c# Task)
前言 对于服务端,达到高性能.高扩展离不开异步.对于客户端,函数执行时间是1毫秒还是100毫秒差别不大,没必要为这一点点时间煞费苦心.对于异步,好多人还有误解,如: 异步就是多线程:异步就是如何 ...
- 五、React事件方法(自写一个方法(函数),然后用按钮onClick触发它、自写方法改变this指向3种写法、
上接:https://www.cnblogs.com/chenxi188/p/11782349.html 项目目录: my-app/ README.md node_modules/ package.j ...
- 如何写一个Python万能装饰器,既可以装饰有参数的方法,也可以装饰无参数方法,或者有无返回值都可以装饰
Python中的装饰器,可以有参数,可以有返回值,那么如何能让这个装饰器既可以装饰没有参数没有返回值的方法,又可以装饰有返回值或者有参数的方法呢?有一种万能装饰器,代码如下: def decorate ...
- Oracle结果集 (MSSQL存储过程写报表)
接触SQL Server比较多,写报表是用存储过程实现. 对Oracle实现像MSSQL那样,还是有很多疑问
随机推荐
- 类和对象:一些相关的BIF - 零基础入门学习Python040
类和对象:一些相关的BIF 让编程改变世界 Change the world by program 一些类和对象相关的 BIF 今天我们来谈谈跟类和对象相关的一些BIF(内置函数): issubcla ...
- CSAPP--虚拟存储器
虚拟存储器 虚拟存储器(VM)是对主存的一种抽象概念.是硬件一场,硬件地址翻译,贮存,磁盘文件和内核软件的完美交互.他为每个进程提供了一个大的,一致的和私有的地址空间. 它将贮存堪称一个存储在磁盘上的 ...
- Linux平台Makefile文件的编写基础篇(转)
目的: 基本掌握了 make 的用法,能在Linux系统上编程.环境: Linux系统,或者有一台Linux服务器,通过终端连接.一句话:有Linux编译环境.准备: ...
- Android ndk第一步,构建jni headers
转载请注明出处:http://www.cnblogs.com/fpzeng/p/4281801.html 源码请见 https://github.com/fpzeng/HelloJNI PC系统: u ...
- DataTables DOM定位
datatables默认会打开部分特性,比如搜索框,分页显示等等,或许你不喜欢datatables这样去布局,可能你想把分页按钮放在底部的中间,搜索框放在顶部的左上角,不用担心datatables考虑 ...
- iOS开发网络数据之AFNetworking使用
iOS开发网络数据之AFNetworking使用 如何选择AFNetworking版本 首先得下载AFNetworking库文件,下载时得首先弄清楚,你将要开发的软件兼容的最低版本是多少.AFNetw ...
- hdu Largest prime factor
类似于素数打表. #include <cstdio> #include <cstring> #include <algorithm> #define maxn 10 ...
- cv:显示Linux命令运行进度
cv: 显示 cp.mv 等命令的进度 2014-07-14 By toy Posted in Apps Edit on GitHub 在 Linux 系统中 , 大多数命令从来都是信奉 “ 沉默是金 ...
- sip演示
发现了一个很好的演示sip的网页,现粘贴在下面: http://www.in2eps.com/fo-sip/tk-fo-sip-ex3261.html
- hdu2768-Cat vs. Dog:图论:二分匹配
Cat vs. Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...