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