湖北万擎常用PHP类库之数据库篇[不断更新中]

发布日期:2007-12-05    浏览次数:

    LAMP技术的核心是开源,湖北万擎开始将不断公布日常开发的常用类库,用于提高开发效率。本篇为数据库操作db类,数据库连接由其他类已经完成,特别注意:为了节省时间,部分是未做任何测试的,主要在于共享思想与方法,同时,也希望各位能提出批评建议!

<?php
//让它在过去就“失效”
header("Expires: Mon, 26 Jul 1900 00:00:00 GMT");
//永远是改动过的
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
//HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
//HTTP/1.0
header("Pragma: no-cache");

//非通用部分*******************************************
//载入数据库配置文件                                //*
require('../Config/dbinfor.php');                   //*
require('../Libs/session.php');                     //*
if ($_POST['cname']!=$_SESSION['cname']) {
 die('<script>alert("非法修改,或长时间未活动导致登录信息丢失!");</script>');
}
//*****************************************************

/**
 * UpdateMysql 用于批量更新MYSQL
 * 传递参数说明:$_GET['action']指定用于添加还是用于修改,可选为:add/mod
 * */
class PostUpdateMysql{
 private $tableName;
 private $postVlaue;

 public  function __construct($tableName){
  if (!$this->tableName=$tableName) {
   self::returnInfHandle('alert','没有定义数据表名称!');
  }
  switch ($_GET['action']){
   case 'add':
    $this->insertData();
    break;
   case 'mod':
    //执行修改记录操作
    break;
   default:
    die('传递action参数错误!');
  }
 }

 private function carrayVlue(){
  //验证数据,所有数据均不能为空
  foreach ($_POST as $key =>$temp){
   if (!$temp) {
    self::returnInfHandle('alert','您的填写不完整!',$key);
    return false;
   }
  }
  $this->postVlaue=$_POST;
  return true;
 }

 private function insertData(){
  $columnStr='';
  $valueStr='';
  $this->carrayVlue();
  if (!$this->postVlaue) {
   self::returnInfHandle('alert','没有接收到一个POST值!');
  }
  foreach ($this->postVlaue as $key=>$temp){
   $columnStr.=" `$key`,";
   $valueStr.=" '$temp',";
  }
  $columnStr=self::throwRightComma($columnStr);
  $valueStr=self::throwRightComma($valueStr);
  $sql="insert into `{$this->tableName}`({$columnStr}) values ({$valueStr})";
  //die($sql);
  mysql_query($sql);
  if (mysql_affected_rows() > 0) {
   self::returnInfHandle('ok');
  }else {
   self::returnInfHandle('alert','录入数据失败!原因:'.mysql_error());
  }
 }

 private static function throwRightComma($str){
  //去除末尾的逗号
  return preg_replace("/^(.*),$/","$1",$str);
 }
 private static function returnInfHandle($type,$str='',$errorname=''){
  //输出脚本,激活父页函数
  switch ($type){
   case 'alert':
    echo '<script>window.parent.UpdateMysql("alert","'.$str.'","'.$errorname.'")</script>';
    exit();
   case 'ok':
    echo '<script>window.parent.UpdateMysql("ok","ok")</script>';
    break;

  }

 }
}

//获取安全的GET值
preg_match("/[\w_]+/",$_GET['tableName'],$temparray);
$tableName=$temparray[0];
if (!$tableName) {
 die('丢失tableName参数或其数值!');
}
$inset=new PostUpdateMysql($tableName);
?>

相关内容:

正在拉取内容......