摘要

在这一章中,我们将介绍php这个服务器端的脚本语言。我们将会看到,这个语言可以很好地支持与mysql数据库的通信。

(2002-08-29 14:10:52)

——————————————————————————–

by wing, 出处:linuxaid

第三章:php入门

在上一章中,我们学习了如何使用mysql数据库引擎在一个简单的数据库(只包含一个叫jokes的数据表)中存储一个笑话的列表。当时,我们是通过在mysql客户端的命令行来输入sql命令(查询语句)来完成的。在这一章中,我们将介绍php这个服务器端的脚本语言。我们将会看到,这个语言可以很好地支持与mysql数据库的通信。

php简介

正如我们在前面提到的,php是一个服务器端的脚本语言。这个概念可能很难理解,特别是如果你以前只用过html和javascript来设计过网页时更是如此。一个服务器端的脚本程序与javascript在许多地方有点相像,两者都允许你在web页面的html中插入一些程序(脚本)。其结果就是,这些脚本使你可以控制在浏览器窗口内会显示什么,这显然要比直接使用html要来得灵活得多。

javascript和php的关键的不同点是:当web浏览器解释javascript时,包含这个脚本的web页面已经被下载了,而对于象php这样的服务器端脚本程序来说,解释的工作是由服务器在将页面发出到浏览器之前完全的。解释工作完成后,web页面中的php的代码将由脚本运行的结果所代替,浏览者看到的完全是标准的html文件。脚本是完全由服务器来处理的。这也就是它的命名的由来:服务器端脚本程序。

让我们再回头看看我们在第一章里建立的示例today.php:

todays date

todays date (according to this web server) is

echo( date("l, f ds y.") );

?>

这个程序中的绝大多数是采用html格式的。只有在中间的行是用php写的。 表示“结束php代码”。web服务器在将这个web页面发送到请求它的浏览器之前会对这个两个标识符之前的所有内容进行处理,并将其转换成标准的html代码。浏览器接受到的页面将是这样的:

todays date

todays date (according to this web server) is

wednesday, june 7th 2000.

请注意,现在所有的php代码都没有被显示。它们被相应的标准的html所取代,能过这个例子,我们可以看到服务器端脚本的几个优势:

不存在浏览器兼容的问题。php脚本仅仅是由web服务器来解释的,所以我们不必担心你使用的语言是否能被你的访问者的浏览器所支持。

可以访问服务器端的资源。在上面的例子中,我们在web页面中放置了web服务器的日期。而当我们使用的是javascript,要实现同样的功能,我们只能显示web浏览器在上面运行的计算机的日期。这个例子还对于使用服务器端的资源还不是十分典型的,事实上我们可以很方便地插入一些其他的信息,而这些信息只能通过运行在服务器上的脚本来调用,例如,运行在web服务器上的mysql数据库中存储的信息。

简化了客户端的装载。javascript会明显降低web页面的显示速度,因为在显示这个web页面之前,浏览器首先得运行javascript脚本。而对于服务器端脚本来说,这种负担将由web服务器独自承担。

基本的语法和命令

对于任何一个用过c、c++、java、javascript、perl或其他源自c的语言的人,php的语法都会让你觉得非常熟悉。一个php脚本包含一系列的命令(语句),web服务器必须依次处理这些指令。与上面提到的其他语言一样,php语句也总是以分号(;)结束。

这是一个典型的php语句:

echo( "this is a test!" );

这个语句调用了一个叫echo的内置函数,并传递给它这么一个字符串:“this is a test! ”。内置函数你可以理解为“不需要另外的说明php就能知道该怎么做”的事情。php有很多的内置函数,我们可以利用它们来做许多事,从发送e-mail到处理存储在数据库中的不同类型的数据都是它们的管辖范围。echo函数只是简单地将传递给它的文本插入到html页面的当前位置。你可以看看下面这个例子:

simple php example

<?php echo("this is a test!"); ?>

如果你给这段代码起名为test.php(或者test.php3,如果你的web主机还没有将.php文件配置为php脚本),并将它放置到你的web服务器上,浏览器看到的将是这样的一页:

simple php example

this is a test!

请注意,包含html标识符(和)在内的所有文本都被正确地显示了出来。

你也许会感到疑惑,我们为什么要在这里使用括号和引号。引号在php中是用来标志字符串的开始和结束。括号有双重作用,首先,它指出echo是一个你想要调用的函数,其次,它标志了这个函数的参数的开始和结束。通过参数,你可以指挥你的函数去干什么。对于echo函数,我们只需要给它一个字符串,用来在页面上显示,但是我们将会看到有些函数有几个参数(在这种情况下,我们用逗号分开各个参数)。即使对于没有参数的函数,我们仍需要有括号,只不过在括号中间我们不必输入任何内容。

变量和运算符

php中的变量与许多其它程序中的变量一样。当还未被初始化时,变量仅仅是一个假想的容器的名字,其中可以存放任何数值。下面的语句建立了一个叫$testvariable(在php中所有的变量都以一个美元符开始)并将其赋值为3:

$testvariable = 3;

php是一个“宽松类型”的语言,这就是说,一个变量可以包含任何类型的数据(数字、字符串或者其他类型),在它的存活期内其类型可以自由地转换。所以如果在上面的语句后再出现这样的语句,这就意味着给我们的已经存在的$testvariable变量重新赋了一个值。这个变量从一个数值变量变成了一个字符串变量:

$testvariable = "three";

在上面的两个语句中我们用到的等于号被称之“赋值运算符”,它是用来给一个变量赋值的。另外,我们还有一些执行数学运算的运算符:

$testvariable = 1 + 1; //变量赋值为2。

$testvariable = 1 – 1; //变量赋值为0。

$testvariable = 2 * 2; //变量赋值为4。

$testvariable = 2 / 2; //变量赋值为1。

上面的各行的最后都有一个注释。注释是通过插入解释性的文字来说明我们的代码的用途,同时它也会通知php解释程序忽略对这部分语句的解释。注释以//开始并在同一行内结束。如果你熟悉在其他语言中的/* */风格的注释,在php中你也可以这样用。在我们这个教程中,我们会经常使用注释来对程序作出解释。

现在回到我们上面的四个语句,四个运算符分别被用来完成加、减、乘、除的运算。另外,还有一个运行符是用来连接字符串的:

//给变量赋值为"hi there!".

$testvariable = "hi " . "there!";

变量可以被应用在很多使用实际数值的地方。你可以看看下面的例子:

$var1 = "php"; //将$var1赋值为"php"

$var2 = 5; //将$var2赋值为5

$var3 = $var2 + 1; //将$var3赋值为6

$var2 = $var1; //将$var2赋值为"php"

echo($var1); //输出"php"

echo($var2); //输出"php"

echo($var3); //输出6

echo($var1 . " rules!"); //输出"php rules!"

echo("$var1 rules!"); //输出"php rules!"

echo($var1 rules!); //输出$var1 rules!

请特别注意最后的两行,你可以直接在一个字符串中包含一个变量名,如果你用双引号将其括起来,将会用该变量的值代替变量名。而最后一行证明,如果你使用的是单引号,是不会作这种转换的。

用户交互和表单

对于许多我们感兴趣的php应用来说,最基本的功能是实现与浏览这个页面的用户的交互。如果你熟悉javascript,你可能会习惯于这么一种事务处理的模式,那就是对用户的许多行动直接作出反应(例如将鼠标移动到页面上的一个连接)。而对于php这样的服务器端脚本程序而言,它用来实现与用户交互的活动范围要小得多,与用户的交互仅仅发生在用户向服务器发出请求以及服务器用一个动态页面作出回应之间。

用户与php实现交互的关键是理解用户对一个新web页面发出的请求中可能包含的发出信息。我们将会看到,php使得这个工作极为简单。

最简单的方法是使用“url查询字符串”在页面请求中发出信息。如果你曾经看到过一个在文件名后包含问号的url,那就是采用的这种技术。让我们来看一个简单的例子。建立一个标准的html文件(不一定使用.php扩展名,在这个文件中将不包含任何php代码),并在其中加入以下连接:

hi, im kevin!

这是指向一个叫welcome.php的文件的连接,但是在连接这个文件的同时,我们还在页面请求中传递了一个变量。这个变量是被作为“查询字符串”的一部分传递的,它位于url的问号后面。这个变量的名字是name,它的值是kevin。也就是说,我们建立了一个连接,这个连接装载welcome.php并告知这个文件中包含的php代码:name等于kevin。

要清楚这么做对我们有什么好处,我们需要看看welcome.php。 同样地将其作为一个新的html文件来建立,但是这一次要记得使用.php 扩展名,这会告诉web服务器在这个文件中有一些php代码需要解释。如果你的web服务器还不接受.php作为php文件的扩展名,你可能需要将其改名为welcome.php3(在这种情况下,你也需要相应调整上面的代码中的连接)。在这个新文件中,输入以下内容:

echo( "welcome to our web site, $name!" );

?>

现在,如果你用第一个文件中连接去装载第二个文件,你会看到这一页显示“welcome to our web site, kevin!”,这个通过url的查询字符串传递过来的变量的值被自动地赋予了一个叫$name的变量,我们在一段文本中显示了这个传递过来的变量。

如果你需要的话,你也可以通过查询字符串传递几个变量。让我们看看这个例子的稍微复杂一点的版本。将html文件中的连接改变为:

hi, im kevin yank!

这一次,我们传递了两个变量:firstname和lastname。这些变量在查询字符串中被&符号分开。你可以传递更多的变量,只要你将每一个name=value对以&符号分开。

如前所述,我们可以在我们的welcome.php文件中使用这两个变量的值:

echo( "welcome to our web site,

$firstname $lastname!" );

?>

mysql与php驱动,用PHP和MySQL构建一个数据库驱动的网站(四)-PHP教程,PHP基础相关推荐

  1. mysql与php驱动程序_用PHP和MySQL构建一个数据库驱动的网站_php

    在我们目前的情况下,我们所需要的列是Jokes表中的JokeText列以及Authors表中的Name列和Email列.Jokes表和Authors表的关联条件是Jokes表中的AID列的值等于Aut ...

  2. php搭建网站访问数据库,用PHP和MySQL构建一个数据库驱动的网站(六)-PHP教程,PHP基础...

    摘要 在这一章内我们会学习到如何在一个web页面中向数据库中存储信息并显示它. (2002-08-29 14:11:25) --------------------------– by wing, 出 ...

  3. Windows驱动学习第一步,第一个Windows驱动

    前段时间工作需要做了一段防外挂的工作,虽说是防外挂,但是只能从ring3来做,ring0的是一点也不知道,公司倒是请来了一个做Windows驱动的,但是他对ring3也是不懂,我俩就配合做一些事情,但 ...

  4. mysql 批量替换 所有表_[收藏]批量替换一个数据库中所有表中所有记录

    /***********批量替换一个数据库中所有表中所有记录************/ declare @delStr nvarchar(500) set @delStr='这里是要替换的字符' /* ...

  5. 在程序员审美下,这个小团队想构建一个规则驱动的开放游戏世界

    不止是2D版骑砍. 玩<部落与弯刀>的时候,我给自己选了陈小春的<乱世巨星>当BGM,因为在这款游戏的大多数时间里,我所做的事情就是带着几队小弟(你可以看到,他们就这样直接跟在 ...

  6. 人工智能能够构建一个自主驱动云吗?

    企业和组织可以从云计算中受益,但许多公司并不希望面对公共云的成本,性能和治理问题,并且认为构建自己的私有云的复杂性和运营开销并没有那么困难. 如今,一些云计算供应商正在使用人工智能(AI)来简化私有云 ...

  7. mysql galera cluster实现vip_2019年学MySQL,最佳的10本新书

    程序员书库(ID:OpenSourceTop) 编译 书单来自:https://bookauthority.org/books/new-mysql-books.https://createwebsit ...

  8. 加载mysql驱动的语句_sql数据库驱动加载语句

    2011年11月27日学习内容总结 1.使用JDBC连接数据库五个步骤,每个步骤的原因.加载驱动:连接不同的数据库要加载不同的驱动:建立连接:访问一个数据库,要知道IP+端口号+数据库名,此外还有用户 ...

  9. iis php mysql wiki_Windows下安装MediaWiki (iis+php+mysql+mediawiki)

    最近几天一直在折腾wiki,对于我这种从来没有自己搭配过php开发环境的人来说,算得上是一个极大的挑战.在此记录详细的搭建过程,以及途中遇到的麻烦问题. 一.安装前的准备 1.我的环境是:iis7+p ...

最新文章

  1. GAN的理解与TF的实现
  2. IT项目管理课程培训
  3. 【爬虫】Scrapy爬取腾讯社招信息
  4. Python 异步 redis
  5. 美国人教你这样用Google,你真的会变特工!
  6. 计算机录音机应用程序在哪,windows7如何给电脑录音 windows7录音机在哪
  7. 7-5 输出字符串中出现的字符 (20 分)
  8. 前端调用3dmax模型转换.gltf格式
  9. idea快捷键自动生成序列化id
  10. 如何在Axure使用iconfont图标库里的图标
  11. 2020家用千兆路由器哪款好_2020千兆路由器评测排名(200以内最强的5款路由器)...
  12. STM32的延迟函数1us、1ms
  13. MR分析(一):SNP数据质控
  14. 压缩软件大评比,7-ZIP/WinZIP/WinRAR的抗争
  15. 索爱无线小蜜蜂扩音器:小巧便携、超大功率,讲课用它事半功倍
  16. Java 编程语言单词汇总(建议收藏)
  17. 微信播放在服务器视频无法播放音乐,【bug解决】ios微信浏览器中背景音乐无法播放...
  18. You can‘t specify target table ‘Person‘ for update in FROM clause
  19. HW6:物理系统与碰撞
  20. Esp32 C3 Arduino 串口开发(1)

热门文章

  1. java打印图片到页面_在Java中打印BufferedImage的正确方法
  2. mysql 数据库 限制大小_MySQL数据库表各种大小限制小结
  3. java逐行读取文件数组_快速高效地在Java中逐行读取大型JSON文件的方法
  4. java.lang中所有的类_java.lang中的数学类
  5. word2vec python实现_教程 | 在Python和TensorFlow上构建Word2Vec词嵌入模型
  6. Vim设置括号自动补全和快速跳出
  7. 开发日记-20190706 关键词 读书笔记 《Perl语言入门》Day 3
  8. 函数式编程之pipeline——很酷有没有
  9. hibernate注解之@Onetomany、@Manytoone、@JoinColumn
  10. 初学Linux,安装虚拟机和Centos7