新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正
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>-->"; ?>
文章结束给大家分享下程序员的一些笑话语录: 姿势要丰富,经常上百度!