zoukankan      html  css  js  c++  java
  • 查询信息php实战第二天

    新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正

        查询和信息

        1.我的留言板上写上了 add方法

    function add(){
    			//添加后返回 影响条数,如果大于0就说明添加胜利
    			if($this->db->data($_POST)->add()>0){
    				echo "添加胜利";
    				//	echo "<script>location.reload()</script>";//避免刷新后的表单的重复提交
    				Header("HTTP/1.1 303 See Other");
    				Header("Location: ");   //转向到根目录
    				exit;
    				
    			}else {
    				die($this->db->error());//添加失败输出错误信息
    			}	
    		}

        对应提交表单

    <div class="center">
    	<form action="?m=index&a=add" method="post">
     		<table border=0>
                            <tr>
                                <td>用户名</td>
                                <td><input type="text" name="userName" value="admin"></td>
                            </tr>
                            <tr>
                                <td>留言内容</td>
                                <td><textarea rows="3" cols="20" name="content">aaaaa</textarea></td>
                            </tr>
                            <tr>
                                <td>电子邮箱</td>
                                <td>email:<input type="text" name="email" value="admin@admin.com"></td>
                            </tr>
                            <tr>
                                <td></td>
                                <td><input type="submit" name="submit" value="留言"></td>
                            </tr>
    		</table>
                
                        <input type="hidden" name="action" value="add">
                    </form>
    			</div>
    </div>

        2.修改了MYSQL操纵类 使 data 自动处理传递过来的数据,对比是否存在字段,不存在不添加.

        每日一道理
    宽容,是一种坦荡,可以无私无畏,无拘无束,无尘无染。宽容,是一种豁达,是比海洋和天空更为博大的胸襟,是宽广和宽厚的叠加,延续和升华。宽容有度,宽容无价,宽以待人,这是人生处世的基本法则。
    <?php
    // +----------------------------------------------------------------------
    // |MySQL操纵类
    // +----------------------------------------------------------------------
    // |@微凉 QQ:496928838
    // +----------------------------------------------------------------------
    class MySQL{
    	
    	private $db_mysql_hostname;
    	private $db_mysql_username;
    	private $db_mysql_password;
    	private $db_mysql_database;
    	private $db_mysql_port;
    	private $db_mysql_charset;
    	
    	private $query_list = array();
    	
    	//查询次数
    	public $query_count = 0;
    	//查询开始时光
    	public $query_start_time;
    	
    	//以后查询ID
    	protected $queryID;
    	//以后连接
    	protected $conn;
    	// 事务指令数
    	protected $transTimes = 0;
    	// 返回或者影响记录数
        protected $numRows    = 0;
        // 错误信息
        protected $error      = '';
    	
    	public function __construct($hostname_or_conf,$username,$password,$database,$port = '3306',$char = 'utf8'){
    		if(is_array($hostname_or_conf)){
    			$this->db_mysql_hostname = $hostname_or_conf['hostname'];
    			$this->db_mysql_username = $hostname_or_conf['username'];
    			$this->db_mysql_password = $hostname_or_conf['password'];
    			$this->db_mysql_database = $hostname_or_conf['database'];
    			$this->db_mysql_port = isset($hostname_or_conf['port'])?$hostname_or_conf['port']:'3306';
    			$this->db_mysql_charset = isset($hostname_or_conf['charset'])?$hostname_or_conf['charset']:'utf8';
    			
    		}elseif(!empty($hostname_or_conf)||!empty($username)||!empty($password)||!empty($database))
    		{
    			 $this->db_mysql_hostname = $hostname_or_conf;
    	  		 $this->db_mysql_username = $username;
    	  		 $this->db_mysql_password = $password;
    	 		 $this->db_mysql_database = $database;
    			 $this->db_mysql_port = $port;
    			 $this->db_mysql_charset = $char;
    			 
    		}else{
    			die('configuration error.');
    		}
          	$this->connect();
        }
    	
    	private function connect(){
    		$server = $this->db_mysql_hostname.':'.$this->db_mysql_port;
    		$this->conn = mysql_connect($server,$this->db_mysql_username,$this->db_mysql_password,true) or die('Connect MySQL DB error!');
    		mysql_select_db($this->db_mysql_database,$this->conn) or die('select db error!');
    		mysql_query("set names " . $this->db_mysql_charset, $this->conn);
    	}
    	/**
         +----------------------------------------------------------
         * 设置数据对象值
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         *table,where,order,limit,data,field,join,group,having
         +----------------------------------------------------------
         */
    	public function table($table){
    		$this->query_list['table'] = $table;
    		return $this;
    	}
    	
    	public function where($where){
    		$this->query_list['where'] = $where;
    		return $this;
    	}
    	
    	public function order($order){
    		$this->query_list['order'] = $order;
    		return $this;
    	}
    	
    	public function limit($offset,$length){
    		if(!isset($length)){
    			$length = $offset;
    			$offset = 0;
    		}
    		$this->query_list['limit'] = 'limit '.$offset.','.$length;
    		return $this;
    	}
    	
    	public function data($data){
    		//读取数据表字段,然后处理表单数据
    		$dataList = $this->getFields($this->query_list['table']);
    		$arr=array();
    		foreach ($dataList as $key=>$value) {
    			if (array_key_exists ($key,$data) ) {
    				$arr[$key]=$data[$key];
    			}
    			
    		}
    		//var_dump($arr);
    		/*
    		if(is_object($data)){
    			$data   =   get_object_vars($data);
    		}elseif (is_string($data)){
    			parse_str($data,$data);
    		}elseif(!is_array($data)){
    			//Log:DATA_TYPE_INVALID
    		}
    		*/
    		$this->query_list['data'] = $arr;
    		return $this;
    	}
    	public function field($fields){
    		$this->query_list['fields'] = $fields;
    		return $this;
    	}
    	public function join($join){
    		$this->query_list['join'] = $join;
    		return $this;
    	}
    	public function group($group){
    		$this->query_list['group'] = $group;
    		return $this;
    	}
    	public function having($having){
    		$this->query_list['having'] = $having;
    		return $this;
    	}
    	/**
         +----------------------------------------------------------
         * 查询
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         * @param 
         +----------------------------------------------------------
         */
    	public function select(){
    		$select_sql = 'select ';
    		$fields = isset($this->query_list['fields'])?$this->query_list['fields']:'*';
    		$select_sql.=$fields;
    		$select_sql.= ' from `'.$this->query_list['table'].'` ';
    		
    		isset($this->query_list['join'])?($select_sql.=$this->query_list['join']):'';
    		isset($this->query_list['where'])?($select_sql.=' where '.$this->query_list['where']):'';
    		isset($this->query_list['group'])?($select_sql.=' group by'.$this->query_list['group']):'';
    		isset($this->query_list['having'])?($select_sql.=' mysql having '.$this->query_list['having']):'';
    		isset($this->query_list['order'])?($select_sql.=' order by '.$this->query_list['order']):'';
    		isset($this->query_list['limit'])?($select_sql.=' '.$this->query_list['limit']):'';
    		
    		return $this->query($select_sql);
    	}
    	/**
         +----------------------------------------------------------
         * 增长
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         * @param 
         +----------------------------------------------------------
         */
    	public function add(){
    		$add_sql = 'insert into `'.$this->query_list['table'].'` (';
    		
    		$data = $this->query_list['data'];
    		$value = $field = '';
    		foreach($data as $k=>$v){
    			$field .= '`'.$k.'`,';
    			if(is_numeric($v))
    				$value .= $v.',';
    			else
    				$value .= '\''.$v.'\',';
    		}
    		$add_sql .= rtrim($field,',').') values ('.rtrim($value,',').')';
    
    	//	echo 'add_sql'.$add_sql;
    		return $this->execute($add_sql);
    	}
    	/**
         +----------------------------------------------------------
         * 删除
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         * @param 
         +----------------------------------------------------------
         */
    	public function delete(){
    		$del_sql = 'delete from `'.$this->query_list['table'].'` where '.$this->query_list['where'];
    		
    		if(isset($this->query_list['order']))
    			$del_sql .= 'order by '.$this->query_list['order'];
    		if(isset($this->query_list['limit']))
    			$del_sql .= ' '.$this->query_list['limit'];
    			
    		return $this->execute($del_sql);
    		
    	}
    	/**
         +----------------------------------------------------------
         * 更新
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         * @param 
         +----------------------------------------------------------
         */
    	public function update(){
    		$update_sql = 'update `'.$this->query_list['table'].'` set ';
    		$data = $this->query_list['data'];
    		
    		foreach($data as $k=>$v){
    			if(is_numeric($v))
    				$update_sql .= '`'.$k.'` ='.$v.',';
    			else
    				$update_sql .= '`'.$k.'` =\''.$v.'\',';
    		}
    		$update_sql = rtrim($update_sql,',');
    		if(isset($this->query_list['where']))
    			$update_sql .= ' where '.$this->query_list['where'];
    		if(isset($this->query_list['order']))
    			$update_sql .= ' order by '.$this->query_list['order'];
    		if(isset($this->query_list['limit']))
    			$update_sql .= ' '.$this->query_list['limit'];
    		
    		return $this->execute($update_sql);
    		
    	}
    	 /**
         +----------------------------------------------------------
         * 执行查询 返回数据集
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         * @param string $sql  sql指令
         */
        public function query($sql) {
            if ( !$this->conn ) return false;
            $this->queryStr = $sql;
            //释放前次的查询结果
            if ( $this->queryID ) {    $this->free();    }
            
            $this->query_start_time = microtime(true);
            
            $this->queryID = mysql_query($sql, $this->conn);
            $this->query_count++;
            if ( false === $this->queryID ) {
                $this->error();
                return false;
            } else {
                $this->numRows = mysql_num_rows($this->queryID);
                return $this->getAll();
            }
        }
    	/**
         +----------------------------------------------------------
         * 执行语句
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         * @param string $sql  sql指令
         +----------------------------------------------------------
         */
        public function execute($sql) {
            if ( !$this->conn ) return false;
            $this->queryStr = $sql;
            //释放前次的查询结果
            if ( $this->queryID ) {    $this->free();    }
            
            $this->query_start_time = microtime(true);
            
            $result =   mysql_query($sql, $this->conn) ;
            $this->query_count++;
            if ( false === $result) {
                $this->error();
                return false;
            } else {
                $this->numRows = mysql_affected_rows($this->conn);
                return $this->numRows;
            }
        }
    	/**
         +----------------------------------------------------------
         * 获得全部的查询数据
         +----------------------------------------------------------
         * @access private
         +----------------------------------------------------------
         * @return array
         */
        private function getAll() {
            //返回数据集
            $result = array();
            if($this->numRows >0) {
                while($row = mysql_fetch_assoc($this->queryID)){
                    $result[]   =   $row;
                }
                mysql_data_seek($this->queryID,0);
            }
            return $result;
        }
    	/**
         +----------------------------------------------------------
         * 取得数据表的字段信息
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         */
        public function getFields($tableName) {
            $result =   $this->query('SHOW COLUMNS FROM `'.$tableName.'`');
            $info   =   array();
            if($result) {
                foreach ($result as $key => $val) {
                    $info[$val['Field']] = array(
                        'name'    => $val['Field'],
                        'type'    => $val['Type'],
                        'notnull' => (bool) ($val['Null'] === ''), // not null is empty, null is yes
                        'default' => $val['Default'],
                        'primary' => (strtolower($val['Key']) == 'pri'),
                        'autoinc' => (strtolower($val['Extra']) == 'auto_increment'),
                    );
                }
            }
            return $info;
        }
    	/**
         +----------------------------------------------------------
         * 取得数据库的表信息
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         */
        public function getTables($dbName='') {
            if(!empty($dbName)) {
               $sql    = 'SHOW TABLES FROM '.$dbName;
            }else{
               $sql    = 'SHOW TABLES ';
            }
            $result =   $this->query($sql);
            $info   =   array();
            foreach ($result as $key => $val) {
                $info[$key] = current($val);
            }
            return $info;
        }
    
    	/**
         +----------------------------------------------------------
         * 最后次操纵的ID
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         * @param 
         +----------------------------------------------------------
         */
    	 public function last_insert_id(){
            return mysql_insert_id($this->conn);
        }
        /**
         * 执行一条带有结果集计数的
         */
        public function count($sql){
            return $this->execute($sql);
        }
    	/**
         +----------------------------------------------------------
         * 启动事务
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         * @return void
         +----------------------------------------------------------
         */
        public function startTrans() {
            if ($this->transTimes == 0) {
                mysql_query('START TRANSACTION', $this->conn);
            }
            $this->transTimes++;
            return ;
        }
    
        /**
         +----------------------------------------------------------
         * 提交事务
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         * @return boolen
         +----------------------------------------------------------
         */
        public function commit()
        {
            if ($this->transTimes > 0) {
                $result = mysql_query('COMMIT', $this->conn);
                $this->transTimes = 0;
                if(!$result){
                    throw new Exception($this->error());
                }
            }
            return true;
        }
    
        /**
         +----------------------------------------------------------
         * 事务回滚
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         * @return boolen
         +----------------------------------------------------------
         */
        public function rollback()
        {
            if ($this->transTimes > 0) {
                $result = mysql_query('ROLLBACK', $this->conn);
                $this->transTimes = 0;
                if(!$result){
                    throw new Exception($this->error());
                }
            }
            return true;
        }
    	/**
         +----------------------------------------------------------
         * 错误信息
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         * @param 
         +----------------------------------------------------------
         */
    	 public function error() {
            $this->error = mysql_error($this->conn);
            if('' != $this->queryStr){
                $this->error .= "\n [ SQL语句 ] : ".$this->queryStr;
            }
            return $this->error;
        }
    	/**
         +----------------------------------------------------------
         * 释放查询结果
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         */
        public function free() {
            @mysql_free_result($this->queryID);
            $this->queryID = 0;
            $this->query_list = null;
        }
        /**
         +----------------------------------------------------------
         * 关闭连接
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         * @param 
         +----------------------------------------------------------
         */
    	function close(){
    		if ($this->conn && !mysql_close($this->conn)){
                throw new Exception($this->error());
            }
            $this->conn = 0;
            $this->query_count = 0;
    	}
    	/**
         +----------------------------------------------------------
         * 析构方法
         +----------------------------------------------------------
         * @access public
         +----------------------------------------------------------
         */
    	function __destruct(){
    		 $this->close();
    	}
    }

        3.我学会了浏览器重定向

        用HTTP头信息 
    PHP里的header()函数的作用就是向浏览器收回由HTTP协议划定的原来应该通过WEB服务器的控制指令,例如声明返回信息的类型("Context-type: xxx/xxx"),页面的属性("No cache", "Expire")等等。
    用HTTP头信息重定向到另外一个页面的方法如下:

    <?php
    Header("HTTP/1.1 303 See Other");
    Header("Location: $url");   //注意Location: 前面有一个空格
    exit;
    }
    ?>

        用脚原来实现

        举例如下:

    <?php
    $url="http://localhost/";
    echo "<!--<SCRIPT LANGUAGE="JavaScript">";
    echo "location.href=’$url’";
    echo "</SCRIPT>-->";
    ?>

    文章结束给大家分享下程序员的一些笑话语录: 姿势要丰富,经常上百度!

  • 相关阅读:
    Mongodb中Sharding集群
    Codis --豌豆荚开源的Redis分布式中间件
    Linux下查看文件和文件夹大小
    kafka中处理超大消息的一些考虑
    heroku
    MVCC图示
    oracle ORA_ROWSCN 行记录的更新时间
    6个理由告诉你为什么要用NAS
    RAID技术介绍和总结
    新一代分布式任务调度框架:当当elastic-job开源项目的10项特性
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3091793.html
Copyright © 2011-2022 走看看