php与Redis分页程序代码
用上redis之后速度上去的结果就是操作数据的复杂性了、分页有种脱了裤子放屁的感觉。但是也没有别的办法。代码如下
代码如下 | 复制代码 |
<?php //数据库
|
只是在做例子的时候随便敲敲、完全没有代码规范。请自己封装 基本用上的方法就是Reids的 hMset(),zAdd(), hGetAll(),zRevRange();如有不明白可以查看redis手册,或者与松林讨论。
一.mysql数据库
代码如下 | 复制代码 |
<?php |
补充
代码如下 | 复制代码 |
// 从表中提取信息的sql语句 // 显示字段名称 |
二.pdo_mysql(推荐)
连接:
代码如下 | 复制代码 |
$pdo = new PDO($dsn, $username, $password, $options); 方法1: 绑定关联数组 $str=$pdo->prepare("INSERT INTO `user` (`username`, `password`) VALUES (:username,:password)"); 方法2: 绑定索引数组
改: $str=$pdo->prepare("UPDATE `user` SET username=:username,password=:password where id=:id"); $str=$pdo->prepare("select * from user where id > :id order by id"); 方法2: 全部取出,返回到二维数组
方法3:单个取出,循环遍历,绑定字段名到变量
|
二.mysqli
代码如下 | 复制代码 |
(用mysqli链接MYSQL数据库) (其他操作) <?php |
三种处理查询结果
-------------------------------------------------------
代码如下 | 复制代码 |
$sql = "select * from user"; $result = $mysqli->query($sql); (1)fetch_row() 返回索引数组 fetch_row() while(list($id,$name,$pwd)=$result->fetch_row()){ echo "id: ".$id." name:".$name." pwd:".$pwd."<br>"; } (2)fetch_assoc() 返回关联数组 fetch_assoc() while ($row = $result->fetch_assoc()){ echo "id:".$row["userId"]." name:".$row["userName"]." pwd:".$row["password"]."<br>"; } (3)fetch_object()返回对象 while($row = $result->fetch_object()){ echo "id:".$row->userId." name:".$row->uerName." pwd:".$row->password."<br>"; } |
记php支持oracle连接函数
php.ini文件中的配置,去掉 ;extention = php_oci8.dll,去掉前面的分号
重启apache就可以了,
如果不行,我们再把php目录中的php_oci8.dll拷到windows系统的system32下面去吧。
oracle数据库建立链接
代码如下 | 复制代码 |
1.$conn = oci_connect('username','password',"(DEscriptION=(ADDRESS=(PROTOCOL =TCP)(HOST=192.168.1.100)(PORT = 1521))(CONNECT_DATA =(SID=test)))"); 2.$conn = oci_connect('username','password','192.168.1.100/test'); 3.Oracle 连接方法: set adocon=Server.Createobject("adodb.connection") 4.Oracle OLE DB 连接方法: set adocon=Server.Createobject("adodb.connection") |
有的时候第一种方式不行,使用第二种,里面的几个参数分别是用户名、密码、oracle服务地址,其中test是服务名。
代码如下 | 复制代码 |
$sql = "select * from table_exmaple" |
看个完整的例子
如果PHP版本>5.0,那么使用下面的函数
oci_connect ( username, password , dbname )
例子:
代码如下 | 复制代码 |
<?php $conn = oci_connect('hr', 'hr', 'orcl'); // 建立连接 if (!$conn) { $e = oci_error(); print htmlentities($e['message']); exit; } $query = 'SELECT * FROM DEPARTMENTS'; // 查询语句 $stid = oci_parse($conn, $query); // 配置SQL语句,准备执行 if (!$stid) { $e = oci_error($conn); print htmlentities($e['message']); exit; } $r = oci_execute($stid, OCI_DEFAULT); // 执行SQL。OCI_DEFAULT表示不要自动commit if(!$r) { $e = oci_error($stid); echo htmlentities($e['message']); exit; } // 打印执行结果 print '<table border="1">'; while($row = oci_fetch_array($stid, OCI_RETURN_NULLS)) { print '<tr>'; foreach($row as $item) { print '<td>'.($item?htmlentities($item):' ').'</td>'; } print '</tr>'; } print '</table>'; oci_close($conn); ?> |
代码如下 | 复制代码 |
<?php /** * 创建时间: 2012年5月21日 * * 说明:分卷文件是以_v1.sql为结尾(20120522021241_all_v1.sql) * 功能:实现mysql数据库分卷备份,选择表进行备份,实现单个sql文件及分卷sql导入 * 使用方法: * * ------1. 数据库备份(导出)------------------------------------------------------------ //分别是主机,用户名,密码,数据库名,数据库编码 $db = new DBManage ( 'localhost', 'root', 'root', 'test', 'utf8' ); // 参数:备份哪个表(可选),备份目录(可选,默认为backup),分卷大小(可选,默认2000,即2M) $db->backup (); * ------2. 数据库恢复(导入)------------------------------------------------------------ //分别是主机,用户名,密码,数据库名,数据库编码 $db = new DBManage ( 'localhost', 'root', 'root', 'test', 'utf8' ); //参数:sql文件 $db->restore ( './backup/20120516211738_all_v1.sql'); *---------------------------------------------------------------------- */ class DBManage { var $db; // 数据库连接 var $database; // 所用数据库 var $sqldir; // 数据库备份文件夹 var $record; // 换行符 private $ds = "n"; // 存储SQL的变量 public $sqlContent = ""; // 每条sql语句的结尾符 public $sqlEnd = ";"; /** * 初始化 * * @param string $host * @param string $username * @param string $password * @param string $thisatabase * @param string $charset */ function __construct($host = 'localhost', $username = 'root', $password = '', $thisatabase = 'test', $charset = 'utf8') { $this->host = $host; $this->username = $username; $this->password = $password; $this->database = $thisatabase; $this->charset = $charset; // 连接数据库 $this->db = mysql_connect ( $this->host, $this->username, $this->password ) or die ( "数据库连接失败." ); // 选择使用哪个数据库 mysql_select_db ( $this->database, $this->db ) or die ( "无法打开数据库" ); // 数据库编码方式 mysql_query ( 'SET NAMES ' . $this->charset, $this->db ); } /* * ------------------------------------------数据库备份start---------------------------------------------------------- */ /** * 数据库备份 * 参数:备份哪个表(可选),备份目录(可选,默认为backup),分卷大小(可选,默认2000,即2M) * * @param $string $dir * @param int $size * @param $string $tablename */ function backup($tablename = '', $dir = '', $size = 2000) { //$dir = $dir ? $dir : 'backup/'; //$size = $size ? $size : 2000; $sql = ''; // 只备份某个表 if (! empty ( $tablename )) { echo '正在备份表' . $tablename . '<br />'; // 插入dump信息 $sql = $this->_retrieve(); // 插入表结构信息 $sql .= $this->_insert_table_structure ( $tablename ); // 插入数据 $data = mysql_query ( "select * from " . $tablename ); // 文件名前面部分 $filename = date ( 'YmdHis' ) . "_" . $tablename; // 字段数量 $num_fields = mysql_num_fields ( $data ); // 第几分卷 $p = 1; // 循环每条记录 while ( $record = mysql_fetch_array ( $data ) ) { // 单条记录 $sql .= $this->_insert_record ( $tablename, $num_fields, $record ); // 如果大于分卷大小,则写入文件 if (strlen ( $sql ) >= $size * 1000) { $file = $filename . "_v" . $p . ".sql"; if ($this->_write_file ( $sql, $file, $dir )) { echo "表-" . $tablename . "-卷-" . $p . "-数据备份完成,生成备份文件 <span style='color:#f00;'>$dir$filename</span><br />"; } else { echo "备份表-" . $tablename . "-失败<br />"; } // 下一个分卷 $p ++; // 重置$sql变量为空,重新计算该变量大小 $sql = ""; } } // sql大小不够分卷大小 if ($sql != "") { $filename .= "_v" . $p . ".sql"; if ($this->_write_file ( $sql, $filename, $dir )) { echo "表-" . $tablename . "-卷-" . $p . "-数据备份完成,生成备份文件 <span style='color:#f00;'>$dir$filename</span><br />"; } else { echo "备份卷-" . $p . "-失败<br />"; } } } else { // 备份全部表 if ($tables = mysql_query ( "show table status from " . $this->database )) { echo "读取数据库结构成功!<br />"; } else { exit ( "读取数据库结构成功!<br />" ); } // 插入dump信息 $sql .= $this->_retrieve(); // 文件名前面部分 $filename = date ( 'YmdHis' ) . "_all"; // 查出所有表 $tables = mysql_query ( 'SHOW TABLES' ); // 第几分卷 $p = 1; // 循环所有表 while ( $table = mysql_fetch_array ( $tables ) ) { // 获取表名 $tablename = $table [0]; // 获取表结构 $sql .= $this->_insert_table_structure ( $tablename ); $data = mysql_query ( "select * from " . $tablename ); $num_fields = mysql_num_fields ( $data ); // 循环每条记录 while ( $record = mysql_fetch_array ( $data ) ) { // 单条记录 $sql .= $this->_insert_record ( $tablename, $num_fields, $record ); // 如果大于分卷大小,则写入文件 if (strlen ( $sql ) >= $size * 1000) { $file = $filename . "_v" . $p . ".sql"; // 写入文件 if ($this->_write_file ( $sql, $file, $dir )) { echo "-卷-" . $p . "-数据备份完成,生成备份文件<span style='color:#f00;'>$dir$file</span><br />"; } else { echo "备份卷-" . $p . "-失败<br />"; } // 下一个分卷 $p ++; // 重置$sql变量为空,重新计算该变量大小 $sql = ""; } } } // sql大小不够分卷大小 if ($sql != "") { $filename .= "_v" . $p . ".sql"; if ($this->_write_file ( $sql, $filename, $dir )) { echo "-卷-" . $p . "-数据备份完成,生成备份文件 <span style='color:#f00;'>$dir$filename<br />"; } else { echo "备份卷-" . $p . "-失败<br />"; } } } } /** * 插入数据库备份基础信息 * * @return string */ private function _retrieve() { $value = ''; $value .= '--' . $this->ds; $value .= '-- MySQL database dump' . $this->ds; $value .= '-- Created by DBManage class, Power By yanue. ' . $this->ds; $value .= '-- http://yanue.net ' . $this->ds; $value .= '--' . $this->ds; $value .= '-- 主机: ' . $this->host . $this->ds; $value .= '-- 生成日期: ' . date ( 'Y' ) . ' 年 ' . date ( 'm' ) . ' 月 ' . date ( 'd' ) . ' 日 ' . date ( 'H:i' ) . $this->ds; $value .= '-- MySQL版本: ' . mysql_get_server_info () . $this->ds; $value .= '-- PHP 版本: ' . phpversion () . $this->ds; $value .= $this->ds; $value .= '--' . $this->ds; $value .= '-- 数据库: `' . $this->database . '`' . $this->ds; $value .= '--' . $this->ds . $this->ds; $value .= '-- -------------------------------------------------------'; $value .= $this->ds . $this->ds; return $value; } /** * 插入表结构 * * @param unknown_type $table * @return string */ private function _insert_table_structure($table) { $sql = ''; $sql .= "--" . $this->ds; $sql .= "-- 表的结构" . $table . $this->ds; $sql .= "--" . $this->ds . $this->ds; // 如果存在则删除表 $sql .= "DROP TABLE IF EXISTS `" . $table . '`' . $this->sqlEnd . $this->ds; // 获取详细表信息 $res = mysql_query ( 'SHOW CREATE TABLE `' . $table . '`' ); $row = mysql_fetch_array ( $res ); $sql .= $row [1]; $sql .= $this->sqlEnd . $this->ds; // 加上 $sql .= $this->ds; $sql .= "--" . $this->ds; $sql .= "-- 转存表中的数据 " . $table . $this->ds; $sql .= "--" . $this->ds; $sql .= $this->ds; return $sql; } /** * 插入单条记录 * * @param string $table * @param int $num_fields * @param array $record * @return string */ private function _insert_record($table, $num_fields, $record) { // sql字段逗号分割 $insert = $comma = ""; $insert .= "INSERT INTO `" . $table . "` VALUES("; // 循环每个子段下面的内容 for($i = 0; $i < $num_fields; $i ++) { $insert .= ($comma . "'" .mysql_real_escape_string ( $record [$i] ) . "'"); $comma = ","; } $insert .= ");" . $this->ds; return $insert; } /** * 写入文件 * * @param string $sql * @param string $filename * @param string $dir * @return boolean */ private function _write_file($sql, $filename, $dir) { $dir = $dir ? $dir : './backup/'; // 不存在文件夹则创建 if (! file_exists ( $dir )) { mkdir ( $dir ); } $re = true; if (! @$fp = fopen ( $dir . $filename, "w+" )) { $re = false; echo "打开文件失败!"; } if (! @fwrite ( $fp, $sql )) { $re = false; echo "写入文件失败,请文件是否可写"; } if (! @fclose ( $fp )) { $re = false; echo "关闭文件失败!"; } return $re; } /* * * -------------------------------上:数据库导出-----------分割线----------下:数据库导入-------------------------------- */ /** * 导入备份数据 * 说明:分卷文件格式20120516211738_all_v1.sql * 参数:文件路径(必填) * * @param string $sqlfile */ function restore($sqlfile) { // 检测文件是否存在 if (! file_exists ( $sqlfile )) { exit ( "文件不存在!请检查" ); } $this->lock ( $this->database ); // 获取数据库存储位置 $sqlpath = pathinfo ( $sqlfile ); $this->sqldir = $sqlpath ['dirname']; // 检测是否包含分卷,将类似20120516211738_all_v1.sql从_v分开,有则说明有分卷 $volume = explode ( "_v", $sqlfile ); $volume_path = $volume [0]; echo "请勿刷新及关闭浏览器以防止程序被中止,如有不慎!将导致数据库结构受损<br />"; echo "正在导入备份数据,请稍等!<br />"; if (empty ( $volume [1] )) { echo "正在导入sql:<span style='color:#f00;'>" . $sqlfile . '</span><br />'; // 没有分卷 if ($this->_import ( $sqlfile )) { echo "数据库导入成功!"; } else { exit ( '数据库导入失败!' ); } } else { //$volume_id = array(); // 存在分卷,则获取当前是第几分卷,循环执行余下分卷 $volume_id = explode ( ".sq", $volume [1] ); // 当前分卷为$volume_id $volume_id = intval ( $volume_id [0] ); while ( $volume_id ) { $tmpfile = $volume_path . "_v" . $volume_id . ".sql"; // 存在其他分卷,继续执行 if (file_exists ( $tmpfile )) { // 执行导入方法 echo "正在导入分卷<span style='color:#f00;'>" . $tmpfile . '</span><br />'; if ($this->_import ( $tmpfile )) { } else { exit ( "导入分卷<span style='color:#f00;'>" . $tmpfile . '</span>失败!可能是数据库结构已损坏!请尝试从分卷1开始导入' ); } } else { echo "此分卷备份全部导入成功!<br />"; return; } $volume_id++; } } } /** * 将sql导入到数据库(普通导入) * * @param string $sqlfile * @return boolean */ private function _import($sqlfile) { // sql文件包含的sql语句数组 $sqls = array (); $f = fopen ( $sqlfile, "rb" ); // 创建表缓冲变量 $create = ''; while ( ! feof ( $f ) ) { // 读取每一行sql $line = fgets ( $f ); // 如果包含'-- '等注释,或为空白行,则跳过 if (trim ( $line ) == '' || preg_match ( '/--*?/', $line, $match )) { continue; } // 如果结尾包含';'(即为一个完整的sql语句,这里是插入语句),并且不包含'ENGINE='(即创建表的最后一句), if (! preg_match ( '/;/', $line, $match ) || preg_match ( '/ENGINE=/', $line, $match )) { // 将本次sql语句与创建表sql连接存起来 $create .= $line; // 如果包含了创建表的最后一句 if (preg_match ( '/ENGINE=/', $create, $match )) { // 则将其合并到sql数组 $sqls [] = $create; // 清空当前,准备下一个表的创建 $create = ''; } // 跳过本次 continue; } $sqls [] = $line; } fclose ( $f ); // 循环sql语句数组,分别执行 foreach ( $sqls as $sql ) { str_replace ( "n", "", $sql ); if (! mysql_query ( trim ( $sql ) )) { echo mysql_error (); return false; } } return true; } /* * -------------------------------数据库导入end--------------------------------- */ // 关闭数据库连接 private function close() { mysql_close ( $this->db ); } // 锁定数据库,以免备份或导入时出错 private function lock($tablename, $op = "WRITE") { if (mysql_query ( "lock tables " . $tablename . " " . $op )) return true; else return false; } // 解锁 private function unlock() { if (mysql_query ( "unlock tables" )) return true; else return false; } // 析构 function __destruct() { mysql_query ( "unlock tables", $this->db ); mysql_close ( $this->db ); } } $db = new DBManage ( 'localhost', 'root', '', 'tao', 'gbk' ); //$db->backup ('tao_admin'); $db->restore ( './backup/20140228222713_tao_admin_v1.sql'); |
代码如下 | 复制代码 |
class mysql { private $host; private $user; private $pass; private $database; private $charset; function __construct($host,$user,$pass,$database,$charset) { $this--->host=$host; $this->user=$user; $this->pass=$pass; $this->database=$database; $this->charset=$charset; $this->connect(); } private function connect()//连接函数 { mysql_connect($this->host,$this->user,$this->pass) or die ("连接数据库服务器失败!"); mysql_select_db($this->database) or die ("连接数据库失败!"); mysql_query("set names $this->charset"); } function select($sql,$tab,$col,$value)//选择函数 { $select=mysql_query("select $sql from $tab where $col=$value"); $row=mysql_fetch_array($select); return $row; } function insert($tab,$col,$value)//插入数据函数 { mysql_query("INSERT INTO $tab($col)values($value)"); } function update($tab,$col,$new_value,$colm,$value)//更新数据函数 { mysql_query("UPDATE $tab SET $col=$new_value where $colm=$value"); } function delete($tab,$col,$value)//删除数据函数 { mysql_query("DELETE FROM $tab where $col=$value"); } function close()//关闭连接函数 { mysql_close(); } } //$mysql=new mysql("127.0.0.1","root","120360150","test","gbk");连接数据库 //$sql=$mysql->select("*","admin","id","3");//选择数据 //print_r($sql);//打印返回的数组 //$mysql->insert("admin","user_name,user_pass","'123','123'");插入数据 //$mysql->update("admin","user_pass","22","id","3");更新数据 //$mysql->delete("admin","id","4");删除数据 //$mysql->close();关闭连接 ?> |
相关文章
- 我们这里介绍php与KindEditor编辑器使用时如何利用KindEditor编辑器的分页功能实现文章内容分页,KindEditor编辑器在我们点击分页时会插入代码,我们只要以它为分切符,就...2016-11-25
- 这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
- 最近接了一个项目,其中有需求要用到jquery分页控件,上网也找到了需要分页控件,各种写法各种用法,都是很复杂,最终决定自己动手写一个jquery分页控件,全当是练练手了。写的不好,还请见谅,本分页控件在chrome测试过,其他的兼容性...2015-10-30
- 本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
- 有一种方法,可以不打开网站而直接查看到这个网站的源代码.. 这样可以有效地防止误入恶意网站... 在浏览器地址栏输入: view-source:http://...2016-09-20
- <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
- 本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
- 本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
- 这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
- 本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
- 本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
- 本文实例讲述了jquery实现的伪分页效果代码。分享给大家供大家参考,具体如下:这里介绍的jquery伪分页效果,在火狐下表现完美,IE全系列下有些问题,引入了jQuery1.7.2插件,代码里有丰富的注释,相信对学习jQuery有不小的帮助,期...2015-10-30
- php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
- php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p> </p> <p> </p> <form name="form1...2016-11-25
- 公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
- 大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
- 其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
- 本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
- 一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
- 这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20