首页 > 数据库 > MySQL > 正文

用PHP和MySQL构建一个数据库驱动的网站(四)

2024-07-24 12:56:16
字体:
来源:转载
供稿:网友
摘要

  在这一章中,我们将介绍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:


<html>
<head>
<title>today's date</title>
</head>
<body>
<p>today's date (according to this web server) is</p>
<?ph
  echo( date("l, f ds y.") );
?>
</body>
</html>



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


<html>
<head>
<title>today's date</title>
</head>
<body>
<p>today's date (according to this web server) is</p>
wednesday, june 7th 2000.
</body>
</html>



  请注意,现在所有的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页面的当前位置。你可以看看下面这个例子:


<html>
<head>
<title> simple php example </title>
</head>
<body>
<p><?php echo("this is a <b>test</b>!"); ?></p>
</body>
</html>



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


<html>
<head>
<title> simple php example </title>
</head>
<body>
<p>this is a <b>test</b>!</p>
</body>
</html>



  请注意,包含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, i'm kevin!


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

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


<?php
  echo( "welcome to our web site, $name!" );
?>



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

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



hi, i'm kevin yank!



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

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


<?php
  echo( "welcome to our web site,
$firstname $lastname!" );
?>


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表