php oracle数据库实现分页

 更新时间:2016年11月25日 16:37  点击:2171
本文章来介绍一下关于php和orace数据库实现数据库的分页功能,下面有需要的同学可以看看吧。
 代码如下 复制代码

<html>
<body>
<?
include "/maya/inc/dbconn.php";
$sql="select max(rownum) from xqhtest where id<50";
$stmt=ociparse($gConn,$sql);
ociexecute($stmt);
ocifetch($stmt);
$rowcount=ociresult($stmt,1);
ocifreestatement($stmt);
echo("共有".$rowcount."条记录<br>n");
$recordperpage=15; //每页显示多少条记录
$pages=ceil($rowcount/$recordperpage);  //总页数
echo("共有".$pages."页<br>n");

?>
<table border=0><tr><td>id</td><td>name</td></tr>
<?

//判断偏移量参数是否传递给了脚本,如果没有就使用默认值0

if (empty($offset))
{
    $offset=1;
}
$currentpage=ceil($offset/$recordperpage); //显示当前页
echo("当前页:".$currentpage."<br>n");
$endset=$offset+$recordperpage;

$stmt2=ociparse($gConn,"SELECT rownum,id,name FROM xqhtest WHERE id<50 and rownum<".$endset." minus select rownum,id,name from xqhtest where id<50 and rownum<".$offset);
//echo "SELECT id,name FROM xqhtest WHERE rownum<".$endset." minus select id,name from xqhtest where rownum<".$offset."<br>n";
ociexecute($stmt2);
//可以是任何sql语句,但select后面一定要有rownum,这是oracle特有的!
while (ocifetch($stmt2))

{
echo("<tr><td>".ociresult($stmt2,"ID")."</td><td>".ociresult($stmt2,"NAME")."</td></tr>n");

   //换成你用于显示返回记录的代码
}
//要写出到所有页面的链接
print "</table><br><br>";


for ($i=1; $i <= $pages; $i++)
{
  $newoffset=($recordperpage*($i-1))+1;
  print "<a href="$PHP_SELF?offset=$newoffset">$i</a> n";
}
print "<br>";

$nextoffset=$recordperpage*$currentpage+1;
$prevoffset=$recordperpage*($currentpage-2)+1;
//判断是否需要上一页连接
if (($currentpage>1) && ($currentpage<=$pages))
{
print "<a href="$PHP_SELF?offset=$prevoffset">上一页</a> n";
}

这是一篇利用php的mysql_connect函数来实现连接mysql数据库提示条件要你的php有php_mysql.dll和libmysql.dll及php.ini中的;extension=php_mysql,去掉前面的“;”了哦。
 代码如下 复制代码

<?php
mysql_connect("localhost", "root","1981427") //连接位于localhost的服务器,用户名为root
?>

连接再选择数据库

 代码如下 复制代码

<?php

@mysql_select_db("test") //选择数据库mydb

?>

这样我们就可以实现连接到数据库了

可能碰到的问题

运行代码出现:Call  to  undefined  function  'mysql_connect()'… 失败

这个提示function undefined是说没有mysql_connect()函数,

解决方法如下

将php_mysql.dll和libmysql.dll文件拷贝至c:winntsystem32中(我漏了libmysql.dll)

找到php.ini中的;extension=php_mysql,去掉前面的";"  重启服务器

 

好了万事具备了,现在我们就差一个简单的连接实例

例1

conn.php文件代码如下:

 代码如下 复制代码
<?php
$conn = @mysql_connect("localhost", "root", "root") or die("数据库链接错误");
mysql_select_db("data", $conn);//data为数据库名称
mysql_query("set names 'GBK'"); //使用GBK中文编码;
?>

 
index.php文件代码如下:

 代码如下 复制代码

<?php
 include("conn.php");//引入conn.php文件
  $SQL="SELECT * FROM `table` order by id desc";
  $query=mysql_query($SQL);
  while($row=mysql_fetch_array($query)){
?>
显示数据内容:
<?=$row[user]?>
<?
  }
?>

这样我们就实现的简单的php mysql连接并查询出我们需要的数据了。


更多关于php mysql数据连接

http://www.111cn.net/phper/18/60db56d779d2a21cfc4c596e1c3880e4.htm

PHP 连接 MSSQL 的新手经常遇到这个问题:数据库里面的 nvarchar 字段中数据一切正常,但是用 PHP 查询出来却发现长度只有 255,我们都知道,在 MySQL 里面 varchar 的长度只有 255,但是 MSSQL 却不是,不会是 PHP 将 nvarchar 按照 MySQL 的 varchar 处理了吧!

 本文给出了解决方法:

select cast(目标字段 as text) from 表名
假如你的 article 表中有个字段 summary 为 nvarchar,那么命令为:

 代码如下 复制代码
select cast(summary as text) from article

关于 cast :

 代码如下 复制代码

CAST ( expression AS data_type )

expression 为目标字段
data_type 为要转换成的数据类型

 

本文章以自己的一些经验来告诉你黑客朋友们会怎么利用你数据库的sql漏洞来把你的数据库下载哦,有需要的同这参考一下本文章。

在数据库中建立一张表:

 代码如下 复制代码

CREATE TABLE `article` (

  `articleid` int(11) NOT NULL AUTO_INCREMENT,

  `title` varchar(100) CHARACTER SET utf8 NOT NULL DEFAULT '',

  `content` text CHARACTER SET utf8 NOT NULL,

  PRIMARY KEY (`articleid`)

) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;

 

在表中插入数据的操作我就不贴代码了,可以去下载下来直接导入到数据库。

接下来,写一个处理用户请求的页面,这里,我们故意不过滤用户提交过来的数据,留下个SQL注入漏洞用来测试。

代码如下:

 代码如下 复制代码

<?php

       $servername = "localhost";

       $dbusername = "root";

       $dbpassword = "";

       $dbname = "test";

       $id=$_GET['id'];//id未经过滤

       $conn=mysql_connect($servername,$dbusername,$dbpassword) or die ("数据库连接失败");

       mysql_select_db($dbname,$conn);

       mysql_query('set names utf8');

       $sql = "SELECT * FROM article WHERE articleid='$id'";

       $result = mysql_query($sql,$conn);

       $row = mysql_fetch_array($result);

       echo "<p>利用SQL注入漏洞拖库<p>";

       if (!$row){

              echo "该记录不存在";

              exit;

       }

       echo "标题<br>".$row['title']."<p>";

       echo "内容<br>".$row['content']."<p>";

?>

 

我们直接在浏览器中输入:

 代码如下 复制代码

http://127.0.0.1/marcofly/phpstudy/sqlinsert/showart.php?id=1

即可访问article表中id为1的一条记录

访问结果如下:

 

接下来,我们就利用这个漏洞(不知道该漏洞的情况下,只能通过工具+手工检测),演示一下如何将article表下载下来。

在地址栏中输入:

 代码如下 复制代码
’ into outfile 'e:/sql.txt'%23

分析:%23是#的ASCII码,由于在地址栏中直接输入#后到数据库系统中会变成空,需要在地址栏中输入%23,那么才会变成#,进而注释掉后面的sql语句。

运行之后,打开E盘,发现多了一个sql.txt文件,打开之后,里面就是表article中的一条记录。

为什么只有一条记录呢?难道该数据表就只有一条记录?不是这样的,因为我们只检索id为1的一条记录而已,那么能否将article表中的所有记录一次性全部下载下来呢?

答案是可以的,只要你的构造的SQL语句足够灵活(再次提出了构造SQL语句的灵活性)。

 

分析一下,当在URL地址栏中输入’into outfile 'e:/sql.txt'%23的时候,合并到sql查询语句中变为:

 

 代码如下 复制代码


SELECT * FROM article WHERE articleid='5' into outfile 'e:/whf.txt'#'

仔细分析下之后,我们可以这样子构造SQL语句:

 

 

 代码如下 复制代码
SELECT * FROM article WHERE articleid='' or 1=1 into outfile 'e:/whf.txt'#'

这样的话,无论如何WHERE子句总是为真,换句话说,该sql语句等价于如下:

 

 

 代码如下 复制代码
SELECT * FROM article into outfile 'e:/whf.txt'#'

懂了吧,该sql语句在先执行select语句,将表article中的所以内容全部检索出来,然后再执行into outfile 'e:/whf.txt'#'将内容导出来。

 

不信的话,你执行下……

 

利用SQL注入漏洞,我们可以猜测表名,列名,用户的密码长度(LEFT函数)等等,当然了,如果能直接向以上的演示那样将表中的数据全部导出的话就没必要去猜表名列名等等

本文章分享一篇关于php mysql替换字符串方法,有需要的同学可以参考一下。
 代码如下 复制代码


<?php
function replace(){
$sql = db_query("SELECT field_languages_value,nid FROM {content_type_company_profile} WHERE

field_languages_value like '%Mandarin Chinese%'");
while($result = db_fetch_object($sql)){
$a = explode("Mandarin Chinese",$result->field_languages_used_value);
$b = $a[].'Chinese'.$a[1];
db_query("UPDATE content_type_company_profile SET field_languages_used_value = '%s' WHERE nid = %

d",$b,$result->nid);
}
}
?>

[!--infotagslink--]

相关文章

  • PHP 数据库缓存Memcache操作类

    操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
  • php KindEditor文章内分页的实例方法

    我们这里介绍php与KindEditor编辑器使用时如何利用KindEditor编辑器的分页功能实现文章内容分页,KindEditor编辑器在我们点击分页时会插入代码,我们只要以它为分切符,就...2016-11-25
  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • 自己动手写的jquery分页控件(非常简单实用)

    最近接了一个项目,其中有需求要用到jquery分页控件,上网也找到了需要分页控件,各种写法各种用法,都是很复杂,最终决定自己动手写一个jquery分页控件,全当是练练手了。写的不好,还请见谅,本分页控件在chrome测试过,其他的兼容性...2015-10-30
  • php语言实现redis的客户端

    php语言实现redis的客户端与服务端有一些区别了因为前面介绍过服务端了这里我们来介绍客户端吧,希望文章对各位有帮助。 为了更好的了解redis协议,我们用php来实现...2016-11-25
  • jQuery+jRange实现滑动选取数值范围特效

    有时我们在页面上需要选择数值范围,如购物时选取价格区间,购买主机时自主选取CPU,内存大小配置等,使用直观的滑块条直接选取想要的数值大小即可,无需手动输入数值,操作简单又方便。HTML首先载入jQuery库文件以及jRange相关...2015-03-15
  • Intellij IDEA连接Navicat数据库的方法

    这篇文章主要介绍了Intellij IDEA连接Navicat数据库的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借价值,需要的朋友可以参考下...2021-03-25
  • 在数据库里将毫秒转换成date格式的方法

    在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式。 一、 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制...2014-05-31
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • JS实现的简洁纵向滑动菜单(滑动门)效果

    本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果。分享给大家供大家参考,具体如下:这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一...2015-10-21
  • 如何解决局域网内mysql数据库连接慢

    通过内网连另外一台机器的mysql服务, 确发现速度N慢! 等了大约几十秒才等到提示输入密码。 但是ping mysql所在服务器却很快! 想到很久之前有过类似的经验, telnet等一些服务在连接请求的时候,会做一些反向域名解析(如果...2015-10-21
  • jquery实现的伪分页效果代码

    本文实例讲述了jquery实现的伪分页效果代码。分享给大家供大家参考,具体如下:这里介绍的jquery伪分页效果,在火狐下表现完美,IE全系列下有些问题,引入了jQuery1.7.2插件,代码里有丰富的注释,相信对学习jQuery有不小的帮助,期...2015-10-30
  • MySQL快速复制数据库数据表的方法

    某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库。使用以下方法,可以非常简单地实现。假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb。步骤如下:1. 首先创建新的数据库newd...2015-10-21
  • mysqldump命令导入导出数据库方法与实例汇总

    mysqldump命令的用法1、导出所有库系统命令行mysqldump -uusername -ppassword --all-databases > all.sql 2、导入所有库mysql命令行mysql>source all.sql; 3、导出某些库系统命令行mysqldump -uusername -ppassword...2015-10-21
  • Mysql数据库错误代码中文详细说明

    1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库...2013-09-23
  • jQuery+slidereveal实现的面板滑动侧边展出效果

    我们借助一款jQuery插件:slidereveal.js,可以使用它控制面板左右侧滑出与隐藏等效果,项目地址:https://github.com/nnattawat/slideReveal。如何使用首先在页面中加载jquery库文件和slidereveal.js插件。复制代码 代码如...2015-03-15
  • PHP+jQuery翻板抽奖功能实现

    翻板抽奖的实现流程:前端页面提供6个方块,用数字1-6依次表示6个不同的方块,当抽奖者点击6个方块中的某一块时,方块翻转到背面,显示抽奖中奖信息。看似简单的一个操作过程,却包含着WEB技术的很多知识面,所以本文的读者应该熟...2015-10-21
  • c#异步读取数据库与异步更新ui的代码实现

    这篇文章主要介绍了c#从数据库里取得数据并异步更新ui的方法,大家参考使用吧...2020-06-25
  • vue.js 表格分页ajax 异步加载数据

    Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.这篇文章主要介绍了vue.js 表格分页ajax 异步加载数据的相关资料,需要的朋友可以参考下...2016-10-20