extension=php_mysql.dll
现在,进入命令行,并尝试通过 -i 切换符运行 PHP 解释器,它会告诉您加载了哪些模块:
C:\>c:\php\php -i
您可能会在这里得到类似以下内容的错误信息:
PHP Startup: Unable to load dynamic library 'C:/foo/ext/php_mysql.dll' -
The specified module could not be found.
注意:为了便于显示,以上消息可能以多行的形式显示。
别担心。这没问题。PHP 现在正在搜索 MySQL 库,但是不知道如何找到它们。请再次打开 php.ini 并搜索 extension_dir。您需要使此条目类似如下内容:
; Directory in which the loadable extensions (modules) reside.
extension_dir = "C:/PHP/ext/"
这会告诉 PHP 在 C:/PHP/ext/ 目录中搜索 php_mysql.dll 模块;如果查看此目录,就会看到此文件。保存 php.ini 并尝试再次运行 php -i 。如果一切均被正确地设置了,那么您将得到关于解释器的大量信息。这就是所想要的内容。您甚至可以向上滚动来查看一些 MySQL 配置数据,如图 11 所示。
现在,您就可以编写一些 PHP 代码了。
在 PHP 脚本中连接到 MySQL
您已经设置好了 Apache、运行了 PHP、安装了 MySQL,并且已经将 MySQL 扩展加载到了 PHP 中,现在您终于可以编写 PHP 代码了。关闭所有这些配置文件,并打开一个新的空文件。输入以下文本:
<html>
<head><title>MySQL Connection Test</title></head>
<body>
<?php
$conn = @mysql_connect("localhost", "root", "your-password");
if (!$conn)
die("<p>Error connecting to MySQL: <i>" . mysql_error() . "</i></p>");
echo("<p>Connected to Database Successfully.</p>");
if (!@mysql_select_db("DB-DEVEL", $conn))
die("<p>Error selecting DB-DEVEL database: <i>" . mysql_error() . "</i></p>");
echo("<p>Selected DB-DEVEL database successfully.</p>");
mysql_close ($conn);
echo("<p>Disconnected</p>");
?>
</body>
</html>
如果您对编写 PHP 代码不是很熟悉的话,那么这些内容对您来说太复杂了,但是它实际上非常简单:
mysql_connect 试图通过所提供的主机名、用户名和密码连接到一个 MySQL 数据库。确保您使用真实的密码来替换 your-password 。
die 生成错误消息,并停止进一步的 PHP 处理。它在 conn 变量出现错误时(即 mysql_connect 不成功的情况)使用。
echo 的作用和它的含义一样;它生成文本(在本例中,它生成 HTML)。
mysql_select_db 试图通过您传递给它的连接对象(代表到数据库的连接的 conn 对象)来切换到所提供的数据库。
mysql_close 哦,您可以自己猜出它的作用。
正如您所看到的,确保开发环境正常工作并不需要很多的代码。将此脚本保存为 test-connect.php,放到和其他 Web 文件(例如 index.php)相同的目录下,然后运行它。最后,在您的 Web 浏览器中加载此文件:http://localhost/test-connect.php。您应该看到如图 12 所示的内容。
如果您的测试成功了,就祝贺一下自己吧!您已经安装了 Apache、PHP 和 MySQL,甚至有了一个到数据库的有效连接。您就要大功告成了。剩下要做的只是连接到示例数据,并确保能够正确检索数据。
通过 PHP 从 MySQL 检索数据
在结束之前,我希望向您快速介绍一下如何连接到 MySQL,并从数据库中检索行。我不会涉及细节问题(本文不是 PHP 教程),我只希望给您提供一个用于运行的示例脚本来确保一切正常。它也将是您开始编写您自己的定制 PHP 代码的一个很好的起点。将此文件保存为 list-users.php。
<html>
<head><title>Listing of Users in Database</title></head>