仓酷云

标题: PHP网页设计一个PHP MySQL操作类... [打印本页]

作者: 透明    时间: 2015-2-3 23:33
标题: PHP网页设计一个PHP MySQL操作类...
终于理解了数据库的概念,而且让你兴奋不已的是你终于可以通过PHP来连接数据库了,这期间你是怎么学会的,我们不去考证了,但是事实证明,你已经可以了。  
  1. <?php /** * MySQL 数据库操作东西
    类, 便利
    数据库操作. * 示例见底部正文
    . * @author: http://www.ideawu.net/blog/ */ class Mysql{ var $conn; var $query_list = array(); public $query_count = 0; public function __construct($c){ if(!isset($c['port'])){ $c['port'] = '3306'; } $server = $c['host'] . ':' . $c['port']; $this->conn = mysql_connect($server, $c['username'], $c['password'], true) or die('connect db error'); mysql_select_db($c['dbname'], $this->conn) or die('select db error'); if($c['charset']){ mysql_query("set names " . $c['charset'], $this->conn); } } /** * 履行
    mysql_query 并前往
    其了局
    . */ public function query($sql){ $stime = microtime(true); $result = mysql_query($sql, $this->conn); $this->query_count ++; if($result === false){ throw new Exception(mysql_error($this->conn)." in SQL: $sql"); } $etime = microtime(true); $time = number_format(($etime - $stime) * 1000, 2); $this->query_list[] = $time . ' ' . $sql; return $result; } /** * 履行
    SQL 语句, 前往
    了局
    的第一笔记
    录(是一个对象). */ public function get($sql){ $result = $this->query($sql); if($row = mysql_fetch_object($result)){ return $row; }else{ return null; } } /** * 前往
    查询了局
    集, 以 key 为键组织成联系关系
    数组, 每个
    元素是一个对象. * 假如
    key 为空, 则将了局
    组织成通俗
    的数组. */ public function find($sql, $key=null){ $data = array(); $result = $this->query($sql); while($row = mysql_fetch_object($result)){ if(!empty($key)){ $data[$row->{$key}] = $row; }else{ $data[] = $row; } } return $data; } public function last_insert_id(){ return mysql_insert_id($this->conn); } /** * 履行
    一条带有了局
    集计数的 count SQL 语句, 并返该计数. */ public function count($sql){ $result = $this->query($sql); if($row = mysql_fetch_array($result)){ return (int)$row[0]; }else{ return 0; } } /** * 入手下手
    一个事务. */ public function begin(){ mysql_query('begin'); } /** * 提交一个事务. */ public function commit(){ mysql_query('commit'); } /** * 回滚一个事务. */ public function rollback(){ mysql_query('rollback'); } /** * 获得
    指定编号的纪录
    . * @param int $id 要获得
    的纪录
    的编号. * @param string $field 字段名, 默许
    为'id'. */ function load($table, $id, $field='id'){ $sql = "select * from `{$table}` where `{$field}`='{$id}'"; $row = $this->get($sql); return $row; } /** * 保留
    一笔记
    录, 挪用
    后, id被设置. * @param object $row */ function save($table, &$row){ $sqlA = ''; foreach($row as $k=>$v){ $sqlA .= "`$k` = '$v',"; } $sqlA = substr($sqlA, 0, strlen($sqlA)-1); $sql = "insert into `{$table}` set $sqlA"; $this->query($sql); if(is_object($row)){ $row->id = $this->last_insert_id(); }else if(is_array($row)){ $row['id'] = $this->last_insert_id(); } } /** * 更新$arr[id]所指定的纪录
    . * @param array $row 要更新的纪录
    , 键名为id的数组项的值唆使
    了所要更新的纪录
    . * @return int 影响的行数. * @param string $field 字段名, 默许
    为'id'. */ function update($table, &$row, $field='id'){ $sqlA = ''; foreach($row as $k=>$v){ $sqlA .= "`$k` = '$v',"; } $sqlA = substr($sqlA, 0, strlen($sqlA)-1); if(is_object($row)){ $id = $row->{$field}; }else if(is_array($row)){ $id = $row[$field]; } $sql = "update `{$table}` set $sqlA where `{$field}`='$id'"; return $this->query($sql); } /** * 删除一笔记
    录. * @param int $id 要删除的纪录
    编号. * @return int 影响的行数. * @param string $field 字段名, 默许
    为'id'. */ function remove($table, $id, $field='id'){ $sql = "delete from `{$table}` where `{$field}`='{$id}'"; return $this->query($sql); } function escape(&$val){ if(is_object($val) is_array($val)){ $this->escape_row($val); } } function escape_row(&$row){ if(is_object($row)){ foreach($row as $k=>$v){ $row->$k = mysql_real_escape_string($v); } }else if(is_array($row)){ foreach($row as $k=>$v){ $row[$k] = mysql_real_escape_string($v); } } } function escape_like_string($str){ $find = array('%', '_'); $replace = array('\%', '\_'); $str = str_replace($find, $replace, $str); return $str; } } ?>
复制代码
利用例子:
  1. <?php // 保留
    $db->save('table_1', $row); // 更新 $db->update('table_1', $row); // 删除 $db->remove('table_1', 1); // 查询 $rows = $db->find($sql, 'id') ?>
复制代码
理解动态语言的概念,运做机制,熟悉PHP语法
作者: admin    时间: 2015-2-4 02:10
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
作者: 只想知道    时间: 2015-2-6 11:30
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
作者: 海妖    时间: 2015-2-12 10:23
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
作者: 兰色精灵    时间: 2015-2-14 05:13
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
作者: 若天明    时间: 2015-2-19 20:25
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
作者: 飘飘悠悠    时间: 2015-2-24 17:21
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
作者: 再现理想    时间: 2015-3-10 21:28
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
作者: 仓酷云    时间: 2015-3-16 19:07
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
作者: 深爱那片海    时间: 2015-3-18 08:25
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
作者: 小魔女    时间: 2015-3-25 14:11
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
作者: 柔情似水    时间: 2015-3-27 11:09
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者: 因胸联盟    时间: 2015-3-27 16:08
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
作者: 蒙在股里    时间: 2015-4-3 23:03
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
作者: 不帅    时间: 2015-4-4 21:10
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
作者: 活着的死人    时间: 2015-4-10 11:19
Ps:以上纯属原创,如有雷同,纯属巧合
作者: 分手快乐    时间: 2015-4-13 04:20
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
作者: 灵魂腐蚀    时间: 2015-4-13 15:58
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
作者: 小女巫    时间: 2015-4-14 17:59
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
作者: 爱飞    时间: 2015-4-16 08:12
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2