四、第一个脚本
如果我告诉您真正难过的一关已经过了,您一定会很高兴。软件的安装过程总是无法预料,因为系统跟系统之间可以说是千差万别。不过您运气不错,数据库运行起来,PHP也编译安装完毕,Web服务器也可以正确处理扩展名为.php3的文件了。
我们下面就开始正式上路,要写第一个脚本程序了。创建一个文本文件,在其中加入下面的内容:
<html>
<body>
<?php$myvar = "Hello World"; echo $myvar; ?>
</body>
</html>
现在,访问相应的URL,例如,网站。
把下面的文字复制到一个文件中,把该文件存在MySQL的bin目录下(我假定文件名是mydb.dump)。
CREATE TABLE employees ( id tinyint(4) DEFAULT '0' NOT NULL
AUTO_INCREMENT, first varchar(20), last varchar(20),
address varchar(255), position varchar(50), PRIMARY KEY (id),
UNIQUE id (id));INSERT INTO employees VALUES (1,'Bob','Smith',
'128 Here St, Cityname','Marketing Manager');
INSERT INTO employees VALUES (2,'John','Roberts','45 There St , Townville','Telephonist'); INSERT INTO employees VALUES (3,'Brad','Johnson','1/34 Nowhere Blvd,
Snowston','Doorman');
如果文字是折行的,请确保每一个INSERT语句都是另起一行的。现在,我们要把数据加入到mydb数据库中了。在命令行下,键入下面的命令:
mysql -u root mydb < mydb.dump
此时您应该不会遇到什么错误。如果真的出错了,请仔细检查一下是否因上面的文字折行而引起错误。>>
六、测试
OK,现在我们已经把数据导入到数据库中了。现在我们来处理这些数据。把下面的文字存入一个文件中,把该文件存在Web服务器的文档目录下,后缀名为.php3。
<html>
<body>
<?php$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM employees",$db);
printf("First Name: %s<br>n", mysql_result($result,0,"first"));
printf("Last Name: %s<br>n", mysql_result($result,0,"last"));
printf("Address: %s<br>n", mysql_result($result,0,"address"));
printf("Position: %s<br>n", mysql_result($result,0,"position")); ?>
</body>
</html>
我来解释一下上面的代码。mysql_connect()函数负责以指定的用户名(本例中用户名是root)连接到指定机器(在本例中机器是本机localhost)上的MySQL数据库。如果您想指定用户口令,您也可以把它送给这个函数。连接的结果保存在变量$db中。
随后,mysql_select_db()函数告诉PHP,我们要读取的数据库是mydb。我们可以在程序中同时连接到多台机器上的多个数据库,但目前我们还是限于连接一个数据库。
接下来,mysql_query()函数完成最复杂的部分。利用刚才得到的连接结果标识,该函数把一行SQL语句送给MySQL服务器去处理。返回的结果保存在变量$result中。
最后,mysql_result()函数显示SQL查询命令所得到的各个字段的值。利用变量$result,我们就可以找到第一条记录,记录号是0,并将其中各字段的值显示出来。
如果您以前没用过Perl或C语言,那么printf函数的语法格式会显得很奇怪。在上面的每一行程序中,%s代表表达式第二部分中的那个变量(例如,mysql_result($result,0,"position"))应该以字符串的形式显示出来。想更深入了解printf,请参阅PHP文档。
这一课我们就讲到这里了。我们已经成功地编译、安装和设置了MySQL和PHP,并且运行了一个简单的程序来读取数据库中的信息。在 第二课里,我们会做一些更复杂的工作,来显示多行记录的数据,甚至与数据库互相交换数据。