LAMP 技术简介(4)
来源:互联网 发布:linux 移动文件夹指令 编辑:程序博客网 时间:2024/05/16 20:30
通过 PHP 访问数据库
在 PHP 中连接到 MySQL
创建好一个表之后,便可以将 MySQL 连到 PHP。执行这个过程的第一步是建立到 MySQL 服务器的一个连接。当建立好这个连接后,便可以与服务器进行交互。
首先,创建 4 个变量,用于存放关于数据库的位置以及如何连接到数据库的详细信息。这 4 个变量分别为 db_host
、db_username
、db_password
和db_database
。注意,PHP 中的变量以一个美元符号($)开头:
$db_host = "localhost";$db_username = "bob";$db_password = "sum65for!";$db_database = "customers";
这 4 个变量包含关于数据库连接的重要信息。第一个变量是 $db_host
,用于表明 MySQL 服务器的位置(除非是在单独一台联网的计算机上运行该服务器,否则这个位置很可能是本地主机)。$db_username
和$db_password
变量包含用于连接的认证信息(在这个例子中,就是用户名 bob 和密码 sum65for!)。最后,还需要指出要处理 MySQL 服务器上的哪个数据库;$db_database
变量将这个数据库指定为 customers 数据库。
执行连接
记住,这里还没有真正连接到数据库;以上代码只是创建了一些包含相关信息的变量。为了连接到数据库,可以运行以下两行代码:
$db = mysql_connect($db_host, $db_username, $db_password);mysql_select_db($db_database, $db);
第一行代码真正创建连接。它使用 mysql_connect
函数将主机、用户名和密码信息从变量传递到服务器。连接的结果被存储在 $db
变量中。然后,在第二行代码中,通过 mysql_select_db
函数表明要使用服务器上的哪个数据库。为此,传递包含所选数据库的$db_database
变量,并指出要从中选择那个数据库的连接($db
)。当输入这两行代码后,应该可以得到一个成功的连接。
执行查询
创建了一个成功的连接之后,接下来的步骤是从数据库中查询一些信息,以便利用这些信息。在这个项目中,需要从数据库中获取客户信息,并将该信息显示在屏幕上。
执行查询的第一步是创建 SQL。在刚才编写的数据库连接代码的下方,添加下面这行代码:
$sql = "SELECT * FROM customers;";
这行代码从 customers 表中选择所有值。可以这样从左至右读这个命令:从(FROM
)customers 表(customers
)中选择(SELECT
)所有值(*
),然后结束查询(;
)。同样,在脚本中的这个地方,还并没有真正执行查询:上述代码只是将 SQL 查询放入一个变量中。为了真正将该查询发送到数据库,可以使用以下命令:
$result = mysql_query($sql);
这个命令的 mysql_query
函数将 $sql
变量发送到服务器。然后,查询的结果(包含查询所返回结果的一个信息集合)被存储在$result
变量中。存储在 $result
变量中的实际数据称作一个记录集,它提供一个充满信息的容器,这些信息都是查询的结果。
键-值对和数组
当引用记录集中的数据时,是以键-值对 的形式引用它的。这个概念很重要,在从数据库中获取数据之前,我将花一点时间讨论一下这些键-值对。
键-值对的思想是有一系列的键,每个键有一个值与之相关联。例如,假设要存储一系列的偏好选择,并将 blue
值与 colour
键相关联,将10
值与 number
键相关联。那么,在使用这些值时,如果在数组中查找 colour
,那么就希望返回blue
。可以用 array()
函数设置这种类型和其他任何类型的数组:
$array = array("colour" => "blue", "number" => 10);
这行代码将 colour
元素设置为 blue
值,并将 number
元素设置为10
值。现在可以用下面这行代码来引用 colour
键:
echo $array['colour'];
当运行这行代码时,可以看到 blue
是如何被输出的,这为在键-值对中存储关于特定事物的信息提供了一种简便方法。这种设置使得数组非常适合存储配置信息和偏好设置之类的细节。
如果要用 foreach
迭代整个数组,可以使用以下代码:
foreach($array as $key => $value) { echo $key . " contains: " . $value . "<br />";}
这个例子将用于访问键的变量命名为 $key
,而将用于访问值的变量命名为 $value
。然后,在 echo
语句中将所有这些信息粘合在一起,该语句将键、文本 contains、值和一个 <br />
标记串接起来,其中的<br />
标记充当一个回车符,以便将每个条目放在一个新行上。
从数据库中获取客户信息
那么,这个数组理论与从数据库中获取客户信息有什么联系呢?可以使用一个数组存储每一行的细节,并且将数据存储在一系列的键-值对中。通过这种方法,如果要获得 forename 字段的内容,只需在数组中查找 forename
键。
为了迭代记录集中的每一行,可以使用以下例子:
while($row = mysql_fetch_assoc($result)) { echo $row['forename'] . " " . $row['surname'];}
然后应该可以看到输出的记录,如图 5 所示。
图 5. 显示 customers 表的内容
while
循环的作用是,当 while
语句旁边的括号中的值为 true 时,不断重复 {
与}
之间的代码。在这个例子中,括号中的条件为 $row = mysql_fetch_assoc($result)
。这一行获取$result
中的结果集,并将它传递给 mysql_fetch_assoc
函数,以便获取第一行记录,并将它放入到一个名为$row
的关联数组中。当把这一行代码放入 while()
循环条件时,该循环将迭代记录集中的每一行,并将每一行放入$row
关联数组。这个功能便于用相同的数组名($row
)访问记录集中的所有数据。
while()
循环中的代码通过引用 $row
数组中的字段名称,简单地将每一行的内容显示在页面上。例如,$row['forename']
显示数据库中每一行的forename 字段的内容。在这个例子中,可以看到如何将 forename 字段、一个空格和 surname 字段串接起来,这行代码将导致屏幕上显示表中的姓名。
串接
PHP 编程中一个最基本的概念 —— 也是 PHP 新用户最容易犯错误的一个概念 —— 是串接(concatenation)。该技术通过使用 .
符号将一个变量的内容与其他信息连接在一起。在下面的例子中,可以看到.
如何将一些文本与 $name
变量连接在一起:
$name = "Bob Smith";echo "Your name is " . $name;
在上面的例子中,建议像这样串接字符串与变量,但实际上也不一定要这么做。可以将上面的代码改为下面这行代码:
echo "Your name is $name";
这行代码也许更容易理解,但是串接使得代码看上去更整洁。此外,对于非串接代码,大多数文本编辑器不能通过适当的语法突出显示,而且,对于数组必须使用串接。
回页首
微调 SQL
在第一个连接到 MySQL 的例子中,SQL 相当简单。SQL 也非常灵活。您很可能想搜索特定的记录,并以不同的方式对返回的数据排序,这些都可以在 SQL 中完成,因此 PHP 脚本基本上可以保持不变。
完 成该项任务的一个很好的地方就是 phpMyAdmin。如前所述,每当与 phpMyAdmin 交互时,为每个交互生成的 SQL 就会显示出来。在 phpMyAdmin 中,还可以运行任意 SQL 语句,以便探索 SQL 语言和尝试不同的查询。为此,单击 phpMyAdmin 界面左侧工具栏中的 SQL 窗口小图标。这时可以看到一个新的窗口(如果使用的是 Firefox,请确保其中的弹出窗口没有挡住这个窗口),在这个窗口中可以输入 SQL 查询。当添加了一个查询时,单击Go。主界面窗口中的查询结果会随之更新。
回页首
执行不同类型的查询
即使是对于简单的 customers 表,也可以执行不同类型的查询来以不同方式返回信息。例如,如果只想要与特定客户 ID 相匹配的行,可以尝试以下查询:
SELECT * FROM customers WHERE id = 1;
这个查询返回用户 id 为 1
的记录(这就是为什么每个表中要有一个惟一主键的原因)。也可以尝试下面的查询:
SELECT * FROM customers WHERE surname = "Curtis";
这个查询返回 surname 字段的值为 Curtis 的所有用户。如果有一个大型的 customers 数据库,那么您很可能想对返回的数据排序。为此,可以使用ORDER BY 子句:
SELECT * FROM customers WHERE surname = "Smith" ORDER BY forename ASC;
这个查询请求 surname 为 Smith 的所有记录,返回的结果根据 forename 字段按字母顺序排序。ASC
表示升序,也可以使用DESC
表示降序。
- LAMP 技术简介(4)
- LAMP 技术简介
- LAMP 技术简介(1)
- LAMP 技术简介(2)
- LAMP 技术简介(3)
- LAMP 技术简介(5)
- LAMP简介
- LAMP简介
- LAMP环境安装简介
- 4K技术简介
- LAMP、Sphinx以及Ajax简介
- LAMP应用架构部署指南I--LAMP架构简介
- LAMP环境安装简介(php+mysql)
- LAMP兄弟连-招募PHP技术讲师
- lamp技术研发人员的必备
- LAMP 关键数据集锦技术选项参考
- LAMP兄弟连-smarty模板技术全套课程
- 视频技术发展历史:MPEG-4技术简介
- Hibernate中乱码的解决例子之(多谢群中52313951提供)
- 今天弟弟高考,祝他们都考好
- LAMP 技术简介(3)
- java面试笔试题大汇总
- 界面类
- LAMP 技术简介(4)
- LAMP 技术简介(5)
- 网站创业者,请忘记搜索引擎!(二)前期规划
- 字符串 对比 equals
- 英语翻译中一些常用的结构及其翻译
- javascript读写XML文件
- 理解Asp.net中的View state
- 设计模式:概要
- 郁闷呀,自己水平太菜了。