$con = odbc_connect("access_test","","",SQL_CUR_USE_ODBC) or die("无法连接ODBC数据源access_test"); //连接一个ODBC数据源
$sql = "select count(*) as total from test"; //取得记录总数SQL语句
$rst = odbc_exec($con,$sql) or die("$sql查询出错"); //执行取得记录总数SQL语句
$recordcount = odbc_result($rst,1); //取得记录总数,在这里也可以用$recordcount = odbc_result($rst,"total");
odbc_free_result($rst); //释放资源
$pagecount = bcdiv($recordcount+$pagesize-1,$pagesize,0); //算出总页数
if(!isset($page)) $page = 1; //如果没有指定显示页码,缺省为显示第一页
if($page<1) $page = 1; //如果页码比1小,则显示第一页
if($page>$pagecount) $page = $pagecount; //如果页码比总页数大,则显示最后一页
if($page>0){ //页码比0大,表示有数据
echo '>> 分页 ';
echo '<a href="' . $PHP_SELF . '?page=1">首页</a> ';
if($page>1){
echo '<a href="' . $PHP_SELF . '?page='. ($page-1) . '">前页</a> ';
}
else{
echo '前页 ';
}
if($page<$pagecount){
echo '<a href="' . $PHP_SELF . '?page='. ($page+1) . '">后页</a> ';
}
else{
echo '后页 ';
}
echo '<a href="' . $PHP_SELF . '?page=' . $pagecount . '">尾页</a> ';
echo '页次: ' . $page . '/' . $pagecount . '页 ';
echo $pagesize . '条/页 ';
echo '共' . $recordcount . '条 ';
$sql = "select * from test"; //取得数据SQL语句
$rst = odbc_exec($con,$sql) or die("$sql查询出错"); //执行取得数据SQL语句
$fieldcount = odbc_num_fields($rst); //取得字段总数
echo '<table border="1" cellspacing="0" cellpadding="0">';
echo '<tr>';
for($i=1;$i<=$fieldcount;$i++){
echo '<th>' . odbc_field_name($rst,$i) . '</th>'; //显示第$i个字段名
}
echo '</tr>';
$rowi = ($page-1)*$pagesize+1;
for($i=0;$i<$pagesize;$i++){
echo '<tr>';
if($rowi>$recordcount){
for($j=0;$j<$fieldcount;$j++){
echo '<td> </td>';
}
}
else{
odbc_fetch_into($rst,$rowi,&$row);
for($j=0;$j<$fieldcount;$j++){
$field = $row[$j];
if($field=='') $field = ' ';
echo '<td>' . $field . '</td>';
}
$rowi = $rowi+1;
}
echo '</tr>';
}
echo '</table>';
odbc_free_result($rst); //释放资源
}
else{
echo "无数据";
}
odbc_close($con); //关闭连接并释放资源
?>
/***************************************
** Title.........: PHP4 HTTP Compression Speeds up the Web
** Version.......: 1.10
** Author........: catoc <catoc@163.net>
** Filename......: gzdoc.php
** Last changed..: 25/08/2000
** Requirments...: PHP4 >= 4.0.1
** PHP was configured with --with-zlib[=DIR]
** Notes.........: Dynamic Content Acceleration compresses
** the data transmission data on the fly
** code by sun jin hu (catoc) <catoc@163.net>
** Most newer browsers since 1998/1999 have
** been equipped to support the HTTP 1.1
** standard known as "content-encoding."
** Essentially the browser indicates to the
** server that it can accept "content encoding"
** and if the server is capable it will then
** compress the data and transmit it. The
** browser decompresses it and then renders
** the page.
** Useage........:
** No space before the beginning of the first '<?' tag.
** ------------Start of file----------
** |<?
** | include('gzdoc.php');
** | print "Start output !!";
** |?>
** |<HTML>
** |... the page ...
** |</HTML>
** |<?
** | gzdocout();
** |?>
** -------------End of file-----------
***************************************/
ob_start();
ob_implicit_flush(0);
function GetHeader(){
$headers = getallheaders();
while (list($header, $value) = each($headers)) {
$Message .= "$header: $value<br>\n";
}
return $Message;
}
function CheckCanGzip(){
global $HTTP_ACCEPT_ENCODING, $PHP_SELF, $Wget, $REMOTE_ADDR, $S_UserName;
if (connection_timeout() || connection_aborted()){
return 0;
}
if ((strpos('catoc'.$HTTP_ACCEPT_ENCODING, 'gzip')) || $Wget == 'Y'){
if (strpos('catoc'.$HTTP_ACCEPT_ENCODING, 'x-gzip')){
$ENCODING = "x-gzip";
$Error_Msg = str_replace('<br>','',GetHeader());
$Error_Msg .= "Time: ".date("Y-m-d H:i:s")."\n";
$Error_Msg .= "Remote-Address: ".$REMOTE_ADDR."\n";
//mail('your@none.net', "User have x-gzip output in file $PHP_SELF!!!", $Error_Msg);
}else{
$ENCODING = "gzip";
}
return $ENCODING;
}else{
return 0;
}
}
function GzDocOut(){
global $PHP_SELF, $CatocGz, $REMOTE_ADDR, $S_UserName;
$ENCODING = CheckCanGzip();
if ($ENCODING){
print "\n<!-- Use compress $ENCODING -->\n";
$Contents = ob_get_contents();
ob_end_clean();
if ($CatocGz == 'Y'){
print "Not compress lenth: ".strlen($Contents)."<BR>";
print "Compressed lenth: ".strlen(gzcompress($Contents))."<BR>";
exit;
}else{
header("Content-Encoding: $ENCODING");
}
print pack('cccccccc',0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00);
$Size = strlen($Contents);
$Crc = crc32($Contents);
$Contents = gzcompress($Contents);
$Contents = substr($Contents, 0, strlen($Contents) - 4);
print $Contents;
print pack('V',$Crc);
print pack('V',$Size);
exit;
}else{
ob_end_flush();
$Error_Msg = str_replace('<br>','',GetHeader());
$Error_Msg .= "Time: ".date("Y-m-d H:i:s")."\n";
$Error_Msg .= "Remote-Address: ".$REMOTE_ADDR."\n";
//mail('your@none.net', "User can not use gzip output in file $PHP_SELF!!!", $Error_Msg);
exit;
}
}
?>
php的require()与include(),在性能方面并无大的不同。
仅有的一些不同在于:
include()执行时文件每次都要进行读取和评估;
require()执行时文件只处理一次(实际上,文件内容替换了require()语句)。
即如果有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高。
另外,如果每次执行代码时要读取不同的文件,或有通过一组文件叠代的循环,就应该使用include(),因为可以给想要包括的文件名设置一个变量,当参数为include()时使用这个变量。
php的require()性能与include()虽然有相似的地方,但是通过自己的学习和查找,还是找到了6点区别如下。
1、
不同之处在于,对include()来说,在include()执行时文件每次都要进行读取和评估;
而对于require()来说,文件只处理一次(实际上,文件内容替换了require()语句)。
这就意味着如果有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高。
2、
require是只执行一次的,不,这么说不恰当。应当说,require是先替代,将指定文件的内容代进来,再运行,所以它不知道你是否设置了FOR循环。而include语句,
是什么时候执行到了,什么把指定文件的内容代进来,继续执行。
所以,如果每次执行代码时想读取不同的文件,或者有通过一组文件叠代的循环,就使用 include(),因为可以给想要包括的文件名设置一个变量,当参数为include()
时使用这个变量。
3、
include在执行时,如果 include 进来的文件发生错误的话,不会立刻停止;而 require 则会立刻终止程序,不再往下执行。
4、include可以用在循环; require不行。
5、include有返回值,而require没有(可能因为如此require的速度比include快)
ok.php里的代码为 echo "ok!";
$login = include('ok.php');
if(!empty($login)){ echo "文件包含成功";
}else{ echo "文件包含失败"; }
最后返回结果为:ok!文件包含成功
只要ok.php里有语句存在,就会返回成功。
在举一个例子:
1.php里的代码如下:
<?php
return array(
'ILOVEYOU'=>1,2,3,4
);
?>
index.php里的代码如下:
<?php
$a = array_change_key_case(include '1.php');
print_r($a);
?>
访问index.php的结果如下:
Array ( [iloveyou] => 1 [0] => 2 [1] => 3 [2] => 4 )
6、require的使用方法:这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常
用的函数,亦可以这个方法将它引入网页中。
include使用方法:这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化