《PHP和MySQL Web开发》学习之二--数据的存储与检索

本小妞迷上赌 提交于 2020-01-05 23:53:14

        最近这段时间主要将时间和精力花在看《代码大全》和《Clean Code》上了,今晚操作了一下久违的PHP,现将第二章的主要内容摘要如下。书很久之前就看了,一直没有写笔记,突然发现很多语法已经有些生疏,看来学习一门新的语言还是要通过练习,练习再练习。当然,写笔记的过程也是一个记忆的过程,俗话说:好记心当不得烂笔头是也。

        存储数据有两种基本方法:保存到普通文件,或者保存到数据库中。

        1.文件处理

         将数据写入文件的三个步骤:(1)打开这个文件,如果不存在则创建;(2)将数据写入文件;(3)关闭文件

        从文件中读取数据的三个步骤:(1)打开这个文件,如果文件不存在则正确的退出;(2)从文件中读取数据;(3)关闭文件。

        2.打开文件

        (1)使用fopen()来打开文件

        如要将一个顾客订单写入Bob订单文件,可以使用如下语句打开该文件:

        $fp = fopen("%DOCUMENT_ROOT/../orders/orders.txt", 'w');

        上面代码中,使用了内置变量$_SERVER['DOCUMENT_ROOT'],指向web服务器文档树的根。用".."表示文档根目录的父目录。

        在Unix系统中,根目录是/,在windows系统中,根目录是C:\。在Unix环境下,目录中的间隔符是正斜线(/)。windows平台下可以使用正斜线或者反斜线,如果使用反斜线,则需要使用转义字符(转义字符为反斜线\)。在PHP中很少使用反斜线,因为这样意味着代码只能在windows下运行。如果使用正斜线吗,代码不需要任何修改就可以在linux下运行。

        (2)通过FTP或者HTTP打开文件

        除了打开本地文件进行读写之外,还可以使用fopen()函数通过FTP、HTTP或者其它协议来打开文件。在php.ini文件中,可以通过关闭allow_url_fopen指令来禁用这个功能。

        如果使用的文件名是以ftp://开始的,fopen()将建立一个连接到指定服务器的被动模式,并返回一个指向文件开始的指针。

        如果使用的文件名是以http://开始的,fopen()函数将建立一个到指定服务器的HTTP连接,并返回一个指向HTTP响应的指针。

        请注意:URL中的域名不区分大小写,但是路径和文件名可能区分大小写。

        (3)打开文件时可能遇到的问题

         打开文件时,常见错误时试图打开一个没有权限进行读写操作的文件。

        任何人都可以写的目录和文件是非常危险的,不应该具有可以从web上直接可写的目录。

        $fp = @fopen("%DOCUMENT_ROOT/../orders/orders.txt", 'w');

        上面代码中的@可以抑制所有由该函数调用所产生的错误。通常在出错的时候这是一个不错的方法,但是要在其它地方处理它。

        3.写文件

        在PHP中写文件相对简单,可以使用fwrite()或者fputs()。fputs()是fwrite()的别名函数。可以使用如下方法调用fwrite:

        fwrite($fp, $outputstring);

        这个函数用来将$outputstring中的字符串写入到$fp指向的文件中。

        fwrite()函数的一个替换函数是file_put_contents(),其原型是:

        int file_put_contents(string filename,

                                      string data

                                      [, int flags

                                      [,resource context]]

        )

        这个函数可以在不需要调用fopen()(或fclose())函数打开要写的文件之前,将包含在data中的字符串数据写入到filename所指定的文件中。

        (1)fwrite的参数

        fwrite的原型如下:

        int fwrite(resource handle, string string[, int length])

        第三个参数length是写入的最大字符数。如果给出这个参数,则将向handle指向的文件中写入字符串,一直写到字符串的末尾或者已经写了length字节才停止。

        4.关闭文件

        使用完文件后要关闭,调用fclose()函数,如下:

        fclose($fp);

        5.读文件

        (1)知道何时读完文件:feof()

        (2)每次读取一行数据:fgets(),fgetss()和fgetcsv()

        (3)读取整个文件:readfile(),fpassthru()和file()

        (4)读取一个字符:fgetc()

        (5)读取任意长度:fread()

        6.使用其它有用的文件函数

        (1)查看文件是否存在:file_exists()

        (2)确定文件大小:filesize()

        (3)删除一个文件:unlink()

        (4)在文件中定位:将文件指针复位到文件的开始rewind(),fseek()(将文件指针指向某个位置)和ftell()(以字节方式报告文件指针在文件的位置)

        7.文件锁定

        文件锁定是通过flock()来实现的。

       8.更好的方式:数据库管理系统

        普通文件存在的问题:

        (1)文件变大时,使用普通文件将变得非常慢

        (2)在一个普通文件中查找特定的一个或者一组记录非常难。

        (3)处理并发访问会遇到问题

        (4)不利于在文件中间插入或删除

        

 

 

 

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!