php初级入门教程:读取数据库程序

 更新时间:2016年11月25日 15:15  点击:1815

首先我们来建立一个数据链接.

<?php
  mysql_connect('localhost','root','mailangel') or die('database server no exists!');
  mysql_select_db('vot') or die('database error!'); 
  mysql_query("SET NAMES 'gbk'");//set document charset encode
?>

下面就是读取数据以及分页的代码了.

<?php
      $page  =isset($_GET['page'])?$_GET['page']:1;     
     $sql ="select * from su_mon_vote order by id desc";
    $result =mysql_query($sql) or die('fail1'.mysql_error());
    $rs  =mysql_fetch_array($result);
    $rdcount =mysql_num_rows($result);
    if($rdcount){
    $pagesize =10;
    $pagecount=($rdcount % $pagesize)?(int)($rdcount / $pagesize)+1:$rdcount/$pagesize;//统计总页面 
    $start =($page>=1 && $page<=$pagecount)?$start=$pagesize*($page-1):$start=1;//取得超始记录
  
    $sql  ="Select * from su_mon_vote  order by id desc limit $start,$pagesize";
    $result =mysql_query($sql);
    while( $rs =mysql_fetch_array($result) ){
 
   ?>
  <tr>
    <td height="50" bgcolor="#FFFFFF"><?php echo $rs[0];?></td>
    <td align="left" valign="top" bgcolor="#FFFFFF"><?php echo $rs[7];?></td>
    <td align="left" valign="top" bgcolor="#FFFFFF"><?php echo $rs[9];?></td>
    <td align="left" valign="top" bgcolor="#FFFFFF"><?php echo $rs[8];?></td>
    <td align="left" valign="top" bgcolor="#FFFFFF"><?php echo $rs[10];?></td>
    <td align="left" valign="top" bgcolor="#FFFFFF"><?php echo $rs[1];?></td>
    <td align="left" valign="top" bgcolor="#FFFFFF"><?php echo $rs[2];?></td>
    <td align="left" valign="top" bgcolor="#FFFFFF"><?php echo $rs[3];?></td>
    <td align="left" valign="top" bgcolor="#FFFFFF"><?php echo $rs[4];?></td>
    <td align="left" valign="top" bgcolor="#FFFFFF"><?php echo $rs[5];?></td>
    <td align="left" valign="top" bgcolor="#FFFFFF"><?php echo $rs[6];?></td>
  </tr>
 
  <?php
  }
  }
  pagelist($page,$pagecount,$rdcount,'?page=',$pagesize);
  ?>

看到加粗那段代码了没,pagelist函数如下.

<?php
 function pagelist($page,$pagecount,$totalrecord,$url,$pagesize){ 
 if($page=="" || $page>$pagecount){exit();}
 echo("记录".$totalrecord."条 共".$pagecount."页 每页".$pagesize."条 <a href=".$url."1>&nbsp;首页</a>&nbsp;");
 if($page>1){ echo("<a href=".$url.($page-1).">&nbsp;上一页&nbsp;</a>"); }  
  if($page+9>$pagecount){ $current=$pagecount; }else{ $current=$page+9; } 
  for($i=$page;$i<=$current;$i++){ echo("<a href=".$url."$i class='sf'>$i</a>");  }
  if($pagecount>$page){ echo("<a href=".$url.($page+1).">&nbsp;下一页&nbsp;</a>"); } 
  echo("<a href=".$url.$pagecount.">&nbsp;末页</a>");
 }
 ?>

原创作品转载请注明:  www.111cn.net/phper/php.html

今天没事来用php+txt现实现一个网站计数器程序,代码我们主要用file_get_content 与fopen,fwrite读写就OK了.

<?php
 Class Sit_count{
   public $FileName = 'count.txt'; 
  function Count_add(){
   if(file_exists($this->FileName) ){
    $Temp = file_get_contents($this->FileName);
    $Total = $Temp+1;    
    echo $Total;
    $T = fopen($this->FileName,'w');
    fwrite($T,$Total);
    fclose($T);    
   }else{
    echo '! file_exists';
   }
   
  }
 }
  $tp = new Sit_count;
  $tp->Count_add();
?>

代码很简单吧,不过这晨count.txt文件要自己建一个哦,好了宣传一下站吧本站原创转载请注明www.111cn.net/phper/php.html


过去的几周对我来说是一段相当复杂的经历。我们公司进行了大裁员,我是其中之一,但却体验到了其中的乐趣。我从来没有被开除过,所以很难不去想得太多。我开始浏览招聘板块,一个全职PHP程序员的职位很吸引人,所以我寄去了简历并获得了面试机会。在面试之间,我和其主要的程序员们在咨询电话中聊了聊,最后他们给我出了一套测试题,其中有一道很耐人寻味。
  找出以下代码的错误之处:
复制PHP内容到剪贴板
PHP代码:
<?function baz($y $z) {
    $x = new Array();
    $x[sales]  = 60;
    $x[profit] = 20:
    foreach($x as $key = $value) {
        echo $key+" "+$value+"<BR>";
    }
}

  你能找到几个呢?
  如果你发现函数参数列表中少了逗号、“new Array()”是不正确的、行末用了冒号而不是分号、foreach中没有用“=>”及用“+”来连接字符串,那恭喜你,你找到了所有的错误,你已经掌握了PHP编程的基础。
  现在我来说说我是怎么回答这道题的。我当然也找出了以上这些问题,但我更进一步。比如,你有没有发现在数组索引里没有用引号将字符串括起来?虽然这不会造成严重错误,但这是一个编码错误。另外,你注意到在echo一行它使用了双引号而不是单引号吗?使用了PHP开始标志的缩写形式?并且没有用“<br/>”而是用了“<BR>”?
  在找出了实际错误后,我又在上面找到的问题后面加了注释。这足够让这份答卷从“正确”转变为“发人深省”了,这也给我的申请加了不少分,所以他们决定聘用我。(但最后我拒绝了,因为我喜欢紧凑的生活节奏,并将自己的PHP技能奉献给我的客户,而不是一家涉猎电信市场的公司。我需要一个舞台来大展身手。)
  那么接下来就来看看我写的10条PHP编程习惯吧:
1、使用单引号括起来的字符串
  当使用双引号来括字符串时,PHP解释器会对其进行变量替换、转义等操作,如“n”。如果你只想输出一个基本的字符串,就用单引号吧,这样会节省一些资源。当然,如果你需要进行变量替换的,那就必须用双引号了,但其他情况下还是用单引号吧。
2、字符串的输出
  你认为以下哪一条语句的运行速度最快?
复制PHP内容到剪贴板
PHP代码:
print "Hi my name is $a. I am $b";
echo "Hi my name is $a. I am $b";
echo "Hi my name is ".$a.". I am ".$b;
echo "Hi my name is ",$a,". I am ",$b;
echo 'Hi my name is ',$a,'. I am ',$b;

  也许这看起来很奇怪,但事实上最后一条的运行速度是最快的。print比echo要慢,在字符串中进行变量替换时会慢,而连接字符串要比用逗号连接来得慢,最后一句则是第一个习惯的体现。所以,不在字符串中进行变量替换不仅会加快程序运行速度,也会让你的代码在任何语法高亮显示的编辑器中显得更为易懂(变量会被高亮显示出来)。很少人知道echo的参数可以用逗号连接,且速度会比字符串连接要来得快。最后再用上第一个习惯,那这条语句就非常好了。
3、在数组索引中使用单引号
  正如你在上面的测试题中所看到的,我指出了$x[sales]从严格意义上来说是错误的,索引应该被括起来,即$x['sales']。这是因为PHP会将没有括起来的索引辨认为“裸”字符串,并把它解释为一个常量。当找不到该常量的定义时,才将其解释为一个字符串,所以这条语句才是可运行的。把索引括起来可以省去这部分工作,如果将来正好要用这一字符串定义常量时也就不会有错误了。我甚至听说这样做要快七倍左右的时间,虽然我没有亲自测试过。更多关于这一话题的讨论,请看PHP手册“数组”一章中的的“数组的能与不能”一节。
4、不要使用开始标志的缩写形式
  你正在使用这样的符号吗?“<?”是非常糟糕的符号,它会引起与XML解释器的冲突。而且一旦你发布了这些代码,那么使用者就必须修改php.ini文件来打开对此符号的支持。所以实在没有理由去使用这种形式。用“<?php“吧。
5、尽量不要使用正则表达式
  在进行常规的字符串操作时,尽可能不要去使用正则表达式(preg和ereg系列函数)。str_replace函数要比preg_replace快得多,甚至strtr函数也要比str_replace来得快。省去这些不必要的麻烦吧,你的老板会感谢你的。
6、不要在循环声明中使用函数
  这个问题不单单出现在PHP中,你可以在其他语言的代码中经常看到:
差:for($i=0;$i<count($array);$i++){...}
好:$count=count($array);for($i=0;$i<$count;$i++){...}
  这因该很好解释,但许多人就是想少写一行代码而浪费了系统资源。如果在循环声明中使用了count函数,那每次循环都会调用一次。如果你的循环次数很多,那就会浪费非常多的时间。
7、永远不要使用register_globals和magic quotes
  这是两个很古老的功能,在当时(十年前)也许是一个好方法,但现在看来并非如此。老版本的PHP在安装时会默认打开这两个功能,这会引起安全漏洞、编程错误及其他的问题,如只有用户输入了数据时才会创建变量等。如今这两个功能都被舍弃了,所以每个程序员都应该避免使用。如果你过去的程序有使用这两项功能,那就尽快将其剔除吧。
8、一定要对变量进行初始化(这里的“初始化”指的是“声明”——译者注)
  当需要没有初始化的变量,PHP解释器会自动创建一个变量,但依靠这个特性来编程并不是一个好主意。这会造成程序的粗糙,或者使代码变得另人迷惑,因为你需要探寻这个变量是从哪里开始被创建的。另外,对一个没有初始化的变量进行递增操作要比初始化过的来得慢。所以对变量进行初始化会是个不错的主意。
9、对代码进行注释
  这个问题已经提过很多次了,但再多次也不够。我知道有些地方是不聘用不对代码进行注释的程序员的。我在前一次工作面试后和副总、面试官一起浏览我写的代码,当他们对我所做的代码注释印象深刻,还了解了一下我的这一习惯。一天之后,我得到了这个工作。
  我知道有些自称为PHP大师的人声称自己的代码写得很好,不需要添加什么注释。在我看来,这些人都是垃圾。学一写注释的规范和技巧,熟悉一下phpDocumentor或Doxygen之类的注释辅助软件,都是值得的。
10、遵循一个编程规范
  关于这一点,是你需要在面试中询问你潜在的老板的,问问他们正在使用什么编程规范。PEAR?Zend?内部规范?要提及你正在使用的编程规范,不管是你自己创建的,还是目前普遍流行的一种。对于PHP这种松松垮垮的语言来说,如果没有一个好的编程规范,那么那些代码就会看起来想一堆垃圾。发臭的,令人作呕的垃圾。一些基本的规范包括空格规范、打括号匹配、命名风格等。这对任何一个追求高质量的代码的人来说都是必须的。
  有人说:“我讨厌你的4个空格的缩进。”我要说,什么?用4个空格来缩进?这比用制表符过占用3个字符的空间。更重要的是,只要是使用比记事本高级的编辑器,你可以自定义制表符的缩进值。所以每个程序员都可以以其最习惯的方式来看代码。可以时设置为4,也可以设置为0(如果你是个受虐狂)。反正我不在乎,但你就是不能用空格来缩进!

下面简单介绍这两个函数的用法:

string addcslashes(string str,string charlist):第1个参数str为待失物原始字符串,第2个参数charlist说明需要在原始串的哪些字符前加上字符“”。
string stripcslashes(string str):去掉字符串中的“”。

例:
<?php
$sql = "update book set bookname='let's go' where bookid=1";
echo $sql."<br>";
$new_sql = addcslashes($sql,"'");
echo $new_sql."<br>"; //update book set bookname='let's go' where bookid=1
$new_sql_01 = stripcslashes($new_sql);
echo $new_sql_01;  //update book set bookname='let's go' where bookid=1
?>

PHP中的命名空间用来解决大型PHP库(libraries)中作用域的问题,在PHP中,所有的类定义都是全局的,所以,当一个库的作者为这处库创建多种应用或公共API类的时候,他必须清楚其他库中相似功能是否存在的可能性并因而选择唯一的名称,来保证这些库可以被同时使用.通常用唯一的字符串加前缀的方法来解决,如数据库类被冠以My_Library_DB,等等.当这个库增加的时候,前缀也随着增加,这样导致很长的名字.命名空间使开发者在每次引用类的时候不使用长名称即可管理命名范
围.

定义
命名空间在每一个文件的开头以namespace 关键字来声明,如
<?php
    namespace MyProject::DB;
   
    const CONNECT_OK = 1;
    class Connection { /* ... */ }
   
    function connect() { /* ... */  }
   
?>
相同的namespace 名称可以在多个文件中使用
namespace 包class,constant和function定义,但无free code
详解:
在命名空间内部,所有定义的class,function和constant名称被自动冠以命名空间名称,类名总是完整的名称,如,以上例子中的类使用MyProject::DB::Connection
来调用
创建的常量,名称是由命名空间名加上常量名,象类常量、命名空间常量只能为静态常量。

非完整修饰名(如名称不包含::),遵循如下:
非自动加载类在当前命名空间(冠以命名空间名称的)中查找
非自动加载全局命名空间中查找
Autoloading for name in current namespace is attempted.
如前者查找失败,则查找失败

非完整修饰函数名称(如名称不包含::)先在当前命名空间查找再在全局空间中查找
非完整修饰常量名称称在当前命名空间中查找再在全局定义的常量里查找

使用命名空间
每一个命名空间里的类和函数可使用全名来引用,如,MyProject::DB::Connection ,或MyProject::DB::Connection
<?php
    require 'MyProject/Db/Connection.php';
    $x = new MyProject::DB::Connection;
    MyProject::DB::connect();
?>
命名空间可以使用use操作符来引入到当前上下文(全局或命名空间)中,这个操作符参数如下:
<?php
/* ... */
use Some::Name as Othername;
// 简化应用
use Foo::Bar;
// 与其相同
use Foo::Bar as Bar;
?>
引入的名称工作如下:每次当解释器遇到局部名称Othername(单一名称或被::分隔的长名称),引入的名称Some::Name被替代
use只能用于全局范围内,非函数或类中,引入的名称从引入开始到当前文件结尾有效,推荐在文件最开始引入以避免冲突
<?php
    require 'MyProject/Db/Connection.php';
    use MyProject::DB;
    use MyProject::DB::Connection as DbConnection;
   
    $x = new MyProject::DB::Connection();
    $y = new DB::connection();
    $z = new DbConnection();
    DB::connect();
?>
全局空间
没有命名空间定义时,所有的类和函数都被放在全局空间内,因为在PHP支持命名空间前就是这样的.
在命名空间上下文中,被冠以::将指定来自全局空间里该名称
<?php
    namespace A::B::C;

/* 此函数为 A::B::C::fopen */
    function fopen() {
         /* ... */
         $f = ::fopen(...); // 全局函数
         return $f;
    }
?>
__NAMESPACE__
解释期间的常量__NAMESPACE__被定义为当前命名空间的名称,在命名空间外部,这个常量值为空字符串.
<?php
namespace A::B::C;
         
function foo() {
// do stuff
}
set_error_handler(__NAMESPACE__ . "::foo");
?>
规则
1.所有完整修饰名通过当前引入规则转化,如A::B::C已引入,C::D::E()被转化为A::B::C::D::e().
2.非完整修饰名通过当前引入规则转化(全名替换简名),如A::B::C已引入,new C()被转化为A::B::C().
3.在命名空间内部,调用当前命名空间内定义的非完整修饰函数名,在解释期间被认为是调用这些命名空间的函数
4.在命名空间内部(A::B),调用在当前命名空间内没有定义的非完整修饰名函数在运行期间被决定,以下是Foo()如何被决定
在当前命名空间内寻找函数A::B::foo().
尝试寻找和调用内部(internal)函数foo()
调用全局空间内用户定义的函数,使用::foo()
5.在命名空间内部(A::B),调用在当前命名空间内没有定义的非完整修饰名类在运行期间被决定,以下是 new C() 如何被决定.
在当前命名空间A::B::C中寻找类
尝试寻找和调用内部类C
尝试自动加载A::B::C
调用全局空间内用户自定义的类,使用new ::c()
6.调用完整修饰名的函数在运行期间被决定.以下是A::B::foo() 如何被决定
在当前命名空间内寻找函数A::B::foo().
调用全局空间内用户定义的函数,使用::foo()
7.调用完整修饰名的类的时候,是在运行的时候才按照想对应的命名空间来加载。比如 new A::B::C() 它是引用 命名空间是A::B下的C() 类
<?php
namespace A;
// 函数调用
foo();      // 先尝试调用命名空间A里定义的"foo
            // 再调用内部(internal)函数 "foo"
::foo();    // 调用全局范围内定义的"foo"
// 类引用
new B();    // 先尝试创建在命名空间A定义的B类的对象
            // 再创建内部类B对象
new ::B();  //新建全局域定义的B类的对象
// 来自其他命名空间的静态方法/命名空间
B::foo();   //先尝试调用来自命名空间"A::B"的函数foo()
            // 再调用内部类B的函数foo()
::B::foo(); //先尝试调用来自命名空间B的函数FOO()  
            //再调用全局域里B里的函数FOO()
//当前命名空间的静态方法/命名空间
A::foo();   //先调用命名空间"A::A" 里的函数FOO()
            // 再调用命名空间A里A类的函数foo()
            // 再尝试调用命名空间A里函数foo()
            // 再调用内部类A里的函数foo()
::A::foo(); // 先尝试调用命名空间A里函数foo()
            // 再调用全局域里A类的函数foo()
?>

[!--infotagslink--]

相关文章

  • PHP 数据库缓存Memcache操作类

    操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
  • C#连接SQL数据库和查询数据功能的操作技巧

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

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • 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
  • 如何解决局域网内mysql数据库连接慢

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

    某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库。使用以下方法,可以非常简单地实现。假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb。步骤如下:1. 首先创建新的数据库newd...2015-10-21
  • php把读取xml 文档并转换成json数据代码

    在php中解析xml文档用专门的函数domdocument来处理,把json在php中也有相关的处理函数,我们要把数据xml 数据存到一个数据再用json_encode直接换成json数据就OK了。...2016-11-25
  • mysqldump命令导入导出数据库方法与实例汇总

    mysqldump命令的用法1、导出所有库系统命令行mysqldump -uusername -ppassword --all-databases > all.sql 2、导入所有库mysql命令行mysql>source all.sql; 3、导出某些库系统命令行mysqldump -uusername -ppassword...2015-10-21
  • node.js如何操作MySQL数据库

    这篇文章主要介绍了node.js如何操作MySQL数据库,帮助大家更好的进行web开发,感兴趣的朋友可以了解下...2020-10-29
  • Mysql数据库错误代码中文详细说明

    1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库...2013-09-23
  • Lua语言新手简单入门教程

    这篇文章主要给大家介绍的是关于Lua语言新手入门的简单教程,文中通过示例代码一步步介绍的非常详细,对各位新手们的入门提供了一个很方便的教程,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。...2020-06-30
  • c#异步读取数据库与异步更新ui的代码实现

    这篇文章主要介绍了c#从数据库里取得数据并异步更新ui的方法,大家参考使用吧...2020-06-25
  • Yii2.0高级框架数据库增删改查的一些操作

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2使用中的一些基本的增删改查操作。 User::find()->all(); //返回所有用户数据; User::findOne($id); //返回 主键...2015-11-24
  • MYSQL数据库使用UTF-8中文编码乱码的解决办法

    1.用phpmyadmin创建数据库和数据表 创建数据库的时候,请将“整理”设置为:“utf8_general_ci” 或执行语句: 复制代码 代码如下:CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 创...2015-10-21
  • springBoot 项目排除数据库启动方式

    这篇文章主要介绍了springBoot 项目排除数据库启动方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-10
  • Linux 下使用shell脚本定时维护数据库的案例

    这篇文章主要介绍了Linux 下使用shell脚本定时维护数据库,本文通过案例分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • c# 对CSV文件操作(写入、读取、修改)

    这篇文章主要介绍了c# 如何对CSV文件操作,帮助大家更好的理解和学习C#,感兴趣的朋友可以了解下...2020-11-03
  • python读取和保存mat文件的方法

    本文主要介绍了python读取和保存mat文件的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-25