`

Learning PHP -数据的存储与检索

    博客分类:
  • php
php 
阅读更多
存储数据有两种基本方法:保存到普通文件,或者保存到数据库中。
数据写入:
  • 1、打开文件。如果文件不存在,需要先创建它。
  • 2、将数据写入这个文件。
  • 3、关闭这个文件。

数据读出:
  • 1、打开文件。如果这个文件不能开,就应该意识到这一点并且正确地推出。
  • 2、从文件中读出数据。
  • 3、关闭这个文件。

选择文件模式:
当打开一个文件的时候,有以下三种选择。
  • 1、打开文件为了只读、只写或者读和写。
  • 2、如果要写一个文件,你可能希望覆盖已有的文件内容,或者仅仅将新的数据追加到未见末尾。如果该文件已经存在,也可以终止程序的执行而不是覆盖该文件。
  • 3、如果希望在一个区分了二级制方式和纯文本方式的系统上写一个文件,还必须指定采用的方式。

函数fopen()支持以上三种方式的组合。

根据服务器设置不同,可以通过如下三种方式得到文档根目录:
  • $_SERVER['DOCUMENT_ROOT']
  • $DOCUMENT_ROOT
  • $HTTP_SERVER_VARS['DOCUMENT_ROOT']

对于表单数据,第一个风格是首选的。
打开文件fopen(path,mode)
写文件:fwrite($fp, &outputstring)
关闭文件:fclose($fp)
fopen()函数的文件模式
  • r   只读  读模式——打开文件,从文件头开始读
  • r+  只读  读写模式——打开文件,从文件头开始读写
  • w   只写  写模式——打开文件,从文件头开始读。如果该文件已经存在,将删除所有文件已有内容。如果该文       件不存在,函数将创建这个文件。
  • x   谨慎写 写模式打开文件,从文件头开始写。入如果文件已经存在,该文件将不会被打开,fopen()函数将返回false,而且PHP将产生一个警告。
  • x+  谨慎写 读/写模式打开文件,从文件头开始写。入如果文件已经存在,该文件将不会被打开,fopen()函数将返回false,而且PHP将产生一个警告。
  • a   追加   追加模式——打开文件,如果该文件已有内容,将从文件末尾开始追加(写),如果该文件不存在,函数将创建这个文件
  • a+  追加   追加模式——打开文件,如果该文件已有内容,将从文件末尾开始追加(写),如果该文件不存在,函数将创建这个文件
  • b   二进制 二进制模式——用于与其他模式进行连接。如果文件系统能够区分二进制文件和文本文件,你可能会使用它。可以获得最大程度的可移植性。二进制模式是默认的模式。
  • t   文本  用于与其他模式的结合。这个模式只是windows系统下一个选项。

以只读模式打开文件:fopen()
知道何时读完文件:feof()
每次读取一行数据:fgets()fgetss()fgetcsv()  
读取整个文件:readfile()fpassthru()file()
  • 第一种方式是readfile()。readfile($path);调用readfile()函数将打开这个文件,并且将文件内容输出到标准输出中,然后再关闭这个文件。
  • 第二种方式是fpassthru()。要使用这个函数,必须先使用fopen()打开文件。然后将文件指针作为参数传递给fpassthru(),这样就可以把文件指针所指向的文件内容发送到标准输出。然后再将这个文件关闭。如果读操作成功,函数返回true,否则返回false。
  • 第三种读取整个文件的函数是file().它和readfile一样。不过它是把结果发送到一个数组中。
  • $filearray = file($path);
  • 第四种选择是使用file_get_contents()函数。这个函数与readfile()相同,但是该函数将以字符串的形式返回文件内容,而不是将文件内容回显到浏览器中。

读取一个字符:fgetc()
while(!feof($fp)){
     $char = fgetc($fp);
     if(!feof($fp)){
          echo ($char == "\n "? "<br /> ": $char);
     }
}

读取任意长度:fread()
读取一个文件的最后一种方法是使用fread()函数从文件中读取任意长度的字节。
查看文件是否存在:file_exists()
确定文件大小:filesize()
删除一个文件:unlink()(PHP中没有名为delete的函数)
在文件中定位:rewind()fseek()ftell()
rewind()函数可以将指针复位到文件的开始。
ftell()函数可以以字节为单位报告文件指针当前在文件中的位置。
调用fseek()函数可以将文件指针fp从whence位置移动offset个字节。
rewind()函数等价于调用一个具有零偏移量的fseek()函数。
文件的锁定:
为了避免多个方法同时操作一个文件,可以使用文件锁定的方法。
文件锁定是通过flock()函数来实现的。
如果打算使用flock()函数,必须将其添加到所有使用文件的脚本中;否则,就没有任何意义。
flock()的操作值
  • LOCK_SH  读操作锁定。这意味着文件可以共享,其他人可以读该文件
  • LOCK_EX  写操作锁定。这是互斥的。该文件不能被共享。
  • LOCK_UN  释放已有的锁定
  • LOCK_NB  防止在请求加锁时发生阻塞


数据库管理系统
  • RDBMS提供了比普通文件更快的数据访问。
  • RDBMS可以很容易地查找并检索满足特定条件的数据集合。
  • RDBMS具有内置的处理并发访问的机制。
  • RDBMS可以随机访问数据。
  • RDBNS具有内置的权限系统。


vieworders.php
<?php

$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];

?>
<html>
<head>
<title>Bob's Auto Parts - Customer Orders</title>
</head>
<body>
<h1]]>Bob's Auto Parts</h1>
<h2]]>Customer Orders</h2>
<?php 
@$fp = fopen("$DOCUMENT_ROOT/orders/orders.txt", 'rb');
if(!$fp){
echo "<p><strong>No orders pending.Please try again later.</strong></p>";
exit;
}
while (!feof($fp)){
$order = fgets($fp,999);
echo $order."<br />";
}
?>
</body>

</html>

proccessorder.php
<?php
$tireqty = $_POST['$tireqty'];
$oilqty = $_POST['$oilqty'];
$sparkqty = $_POST['$sparkqty'];
$address = $_POST['address'];
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
$date = date('H:i, jS F Y');
?>
<html>
<head>
<title>Bob's Auto Parts-Order Results</title>
</head>
<body>
<h1>Bob's Auto Parts</h1>
<h2>Order Results</h2>
<?php 
echo "<p>Order processed at ".date('H:i, jS F Y')."</p>";
echo "<p>Your order is as follows: </p>";
$totalqty = 0;
$totalqty = $tireqty + $oilqty + $sparkqty;
echo "Items ordered: ".$totalqty."<br />";
if($totalqty == 0){

     echo "You did not order anything on the previous page!<br />";

}else{

if($tireqty > 0){

     echo $tireqty." tires<br />";

     }

if($oilqty > 0){

     echo $oilqty." bottles of oil<br />";

     }
if($sparkqty > 0){

     echo $sparkqty." spark plugs<br />";

     }
}
$totalamount = 0.00;
define("TIREPRICE", 100);
define("OILPRICE", 10);
define("SPARKPRICE", 4);

$totalamount = $tireqty * TIREPRICE
+ $oilqty * OILPRICE
+ $sparkqty * SPARKPRICE;
$totalamount=number_format($totalamount, 2, '.', ' ');
echo "<p>Total of order is $.$totalamount.</p>";
echo "<p>Address to ship to is ".$address."</p>";
$outputstring = $date."\t".$tireqty." tires \t".$oilqty." oil\t"
.$sparkqty." spark plugs\t\$".$totalamount."\t".$address."\n";
@ $fp= fopen("$DOCUMENT_ROOT/orders/orders.txt", 'ab');
flock($fp, LOCK_EX);
if(!$fp){
echo "<p><strong>Your orde could not be processed at this time.
  Please try again later.</strong></p></body></html>";
exit;
}
fwrite($fp, $outputstring, strlen($outputstring));
flock($fp, LOCK_UN);
fclose($fp);
echo "<p>Order written.</p>";
?>
</body>

</html>

参考资料:
PHP&MySQL.Web







分享到:
评论

相关推荐

    Learning PHP, MySQL, JavaScript, CSS & HTML5, 3rd Edition

    - **MySQL**:一种关系型数据库管理系统,用于存储和检索数据。 - **JavaScript**:一种客户端脚本语言,用于实现网页交互性。 - **CSS**(层叠样式表):用于定义网页元素的样式,如颜色、布局等。 - **HTML5**...

    Learning PHP MySQL Javascript CSS and HTML5

    在Web开发中,MySQL常与PHP结合使用,为动态网站提供数据存储和检索的功能。本书将介绍MySQL的基本使用,包括数据库的创建、表的管理、数据的增删改查等操作。 ### JavaScript JavaScript是一种在客户端浏览器中...

    learning-web-technologies-spring-2020-2021-sec-g:abc

    5. **PHP与MySQL**:如何使用PHP连接和操作MySQL数据库,进行数据的存储和检索。 6. **PHP高级话题**:可能包括错误和异常处理、面向对象编程、PHP框架如Laravel或Symfony的使用。 7. **Web安全**:讲解防止SQL...

    [PHP.MySQL.JavaScript学习手册].(Learning.PHP.MySQL.and.JavaScript).Robin.Nixon

    MySQL 是一个关系型数据库管理系统 (RDBMS),用于存储、管理和检索结构化数据。它是构建网站后台数据存储的理想选择。 - **使用 JavaScript** JavaScript 是一种客户端脚本语言,用于在浏览器中添加交互性和...

    Learning PHP & MySQL, 2nd Edition.pdf

    2. MySQL是一个流行的开源关系型数据库管理系统,广泛应用于网站和服务的数据存储和检索。 3. “Learning PHP & MySQL, 2nd Edition.pdf”指的是一本名为《学习PHP和MySQL》的第二版电子书,这本书专门针对PHP语言和...

    Language Learning System-开源

    PHP的灵活性和易用性使其成为开发动态网站的首选,尤其是对于数据库驱动的应用程序,如本系统,它能够高效地与MYSQL数据库进行交互,存储和检索用户数据。 MYSQL是这个系统的核心,用于存储学生信息、游戏成绩、...

    Learning PHP, MySQL, JavaScript, and CSS, 2nd Edition

    7. **MySQL**:MySQL是一种流行的开源数据库管理系统,用于存储、检索和管理数据库中的数据。它对于构建包含用户数据和内容的数据驱动型Web应用至关重要。 8. **JavaScript**:JavaScript是一种客户端脚本语言,它...

    深入学习PHP,MySQL,javascript,CSS,html5

    MySQL作为后端数据库,能够高效地存储、检索和处理大量数据。书中的MySQL部分将详细讲解数据库的安装、配置和管理,包括数据库的设计、数据的增删改查操作,以及性能优化方法。 3. JavaScript介绍: JavaScript是一...

    learning-Php:这是我学习PHP的步骤和练习

    MySQL是一种广泛使用的开源关系型数据库管理系统,与PHP配合使用可以实现数据的存储和检索。你需要学习如何建立连接、执行SQL查询、处理结果集等。 接下来,你需要了解PHP中的session和cookie机制。这些是管理用户...

    elcAdmin: Early Learning Center Software-开源

    PHP 允许开发者创建交互性强、功能丰富的网页,同时与 MySQL 数据库无缝集成,便于数据存储和检索。在 elcAdmin 中,PHP 负责处理用户请求,执行业务逻辑,与数据库交互,并生成动态内容返回给前端。 MySQL 是一个...

    PHP经典实例

    4. **数据库操作**:使用MySQL等数据库进行数据存储和检索的方法。 5. **表单处理**:处理用户输入数据,实现动态网页交互。 6. **错误处理与调试**:如何优雅地处理程序运行时可能出现的各种错误。 7. **安全性考虑...

    关于PHP的基本概念、特性、常用框架和应用领域的简要介绍

    这些数据库系统为 PHP 应用提供了强大的数据存储和检索能力。 **丰富的函数库**:PHP 提供了大量的内置函数,这些函数涵盖了字符串处理、数组操作、文件管理等多个方面,大大简化了常见的 Web 开发任务。 **广泛的...

    The Php Programming with MySQL

    它们通常一起被用于开发动态网站,其中PHP用于后端逻辑处理,MySQL用于数据存储和检索。 2. 全英文教材:本书是用英文编写的,这对于学习和理解专业术语是非常有帮助的,尤其是在编程和数据库领域,精确的专业术语...

    E-learning:这是一个电子学习项目,可让您进行虚拟学习,在学生和老师之间共享文档

    在这个项目中,PHP被用来处理用户请求,动态生成网页内容,以及与数据库交互,存储和检索课程资料、用户信息等数据。 1. **用户身份管理**:E-learning平台需要一个用户注册和登录系统,以确保学生和教师的安全访问...

    moodle-1.9.7

    同时,PHP与MySQL数据库的良好集成,使得Moodle能高效地存储和处理大量的学习数据。 MySQL 是一个开源的关系型数据库管理系统,以其稳定性、可扩展性和速度著称。在Moodle中,MySQL用于存储用户信息、课程内容、...

Global site tag (gtag.js) - Google Analytics