[php学习资料] PHP完全自学手册(文档教程)

[复制链接]
 楼主| 发表于 2019-11-19 16:46:16 | 显示全部楼层
PHP MySQL Order By 关键词
ORDER BY 关键词用于对记录集中的数据进行排序。

ORDER BY 关键词
ORDER BY 关键词用于对记录集中的数据进行排序。
ORDER BY 关键词默认对记录进行升序排序。
如果你想降序排序,请使用 DESC 关键字。
语法
  1. SELECT column_name(s)FROM table_name
  2. ORDER BY column_name(s) ASC|DESC
复制代码

如需学习更多关于 SQL 的知识,请访问我们的 SQL 教程
实例
下面的实例选取 "Persons" 表中存储的所有数据,并根据 "Age" 列对结果进行排序:
  1. <?php
  2. $con=mysqli_connect("localhost","username","password","database");// 检测连接if (mysqli_connect_errno()){
  3.         echo "连接失败: " . mysqli_connect_error();}$result = mysqli_query($con,"SELECT * FROM Persons ORDER BY age");while($row = mysqli_fetch_array($result)){
  4.         echo $row['FirstName'];
  5.         echo " " . $row['LastName'];
  6.         echo " " . $row['Age'];
  7.         echo "<br>";}mysqli_close($con);?>
复制代码

以上结果将输出:
  1. Glenn Quagmire 33Peter Griffin 35
复制代码



根据两列进行排序
可以根据多个列进行排序。当按照多个列进行排序时,只有第一列的值相同时才使用第二列:
  1. SELECT column_name(s)FROM table_name
  2. ORDER BY column1, column
复制代码
  1. 2
复制代码


腾讯云
回复

使用道具 举报

 楼主| 发表于 2019-11-19 16:46:53 | 显示全部楼层
PHP MySQL Update
UPDATE 语句用于中修改数据库表中的数据。

更新数据库中的数据
UPDATE 语句用于更新数据库表中已存在的记录。
语法
  1. UPDATE table_name
  2. SET column1=value, column2=value2,...WHERE some_column=some_value
复制代码

注释:请注意 UPDATE 语法中的 WHERE 子句。WHERE 子句规定了哪些记录需要更新。如果您想省去 WHERE 子句,所有的记录都会被更新!
如需学习更多关于 SQL 的知识,请访问我们的 SQL 教程
为了让 PHP 执行上面的语句,我们必须使用 mysqli_query() 函数。该函数用于向 MySQL 连接发送查询或命令。
实例
在本教程的前面章节中,我们创建了一个名为 "Persons" 的表,如下所示:
FirstName
LastName
Age
PeterGriffin35
GlennQuagmire33
下面的例子更新 "Persons" 表的一些数据:
  1. <?php
  2. $con=mysqli_connect("localhost","username","password","database");// 检测连接if (mysqli_connect_errno()){
  3.         echo "连接失败: " . mysqli_connect_error();}mysqli_query($con,"UPDATE Persons SET Age=36
  4. WHERE FirstName='Peter' AND LastName='Griffin'");mysqli_close($con);?>
复制代码

在这次更新后,"Persons" 表如下所示:
FirstName
LastName
Age
PeterGriffin36
GlennQuagmire33


回复

使用道具 举报

 楼主| 发表于 2019-11-19 16:47:40 | 显示全部楼层
PHP MySQL Delete
DELETE 语句用于从数据库表中删除行。

删除数据库中的数据
DELETE FROM 语句用于从数据库表中删除记录。
语法
  1. DELETE FROM table_name
  2. WHERE some_column = some_value
复制代码


注释:请注意 DELETE 语法中的 WHERE 子句。WHERE 子句规定了哪些记录需要删除。如果您想省去 WHERE 子句,所有的记录都会被删除!
如需学习更多关于 SQL 的知识,请访问我们的 SQL 教程
为了让 PHP 执行上面的语句,我们必须使用 mysqli_query() 函数。该函数用于向 MySQL 连接发送查询或命令。
实例
请看下面的 "Persons" 表:
FirstName
LastName
Age
PeterGriffin35
GlennQuagmire33
下面的实例删除 "Persons" 表中所有 LastName='Griffin' 的记录:
  1. <?php
  2. $con=mysqli_connect("localhost","username","password","database");// 检测连接if (mysqli_connect_errno()){
  3.         echo "连接失败: " . mysqli_connect_error();}mysqli_query($con,"DELETE FROM Persons WHERE LastName='Griffin'");mysqli_close($con);?>
复制代码

在这次删除后,"Persons" 表如下所示:
FirstName
LastName
Age
GlennQuagmire33


回复

使用道具 举报

 楼主| 发表于 2019-11-19 16:49:11 | 显示全部楼层
PHP 数据库 ODBC
ODBC 是一种应用程序编程接口(Application Programming Interface,API),使我们有能力连接到某个数据源(比如一个 MS Access 数据库)。

创建 ODBC 连接
通过一个 ODBC 连接,您可以连接到您的网络中的任何计算机上的任何数据库,只要 ODBC 连接是可用的。
这是创建到达 MS Access 数据库的 ODBC 连接的方法:
  • 在控制面板中打开管理工具图标。
  • 双击其中的数据源(ODBC)图标。
  • 选择系统 DSN 选项卡。
  • 点击系统 DSN 选项卡中的添加
  • 选择Microsoft Access Driver。点击完成
  • 在下一个界面,点击选择来定位数据库。
  • 为数据库起一个数据源名(DSN)
  • 点击确定

请注意,必须在您的网站所在的计算机上完成这个配置。如果您的计算机上正在运行 Internet 信息服务(IIS),上面的指令将会生效,但是如果您的网站位于远程服务器,您必须拥有对该服务器的物理访问权限,或者请您的主机提供商为您建立 DSN。

连接到 ODBC
odbc_connect() 函数用于连接到 ODBC 数据源。该函数有四个参数:数据源名、用户名、密码以及可选的指针类型。
odbc_exec() 函数用于执行 SQL 语句。
实例
下面的实例创建了到达名为 northwind 的 DSN 的连接,没有用户名和密码。然后创建并执行一条 SQL 语句:
  1. $conn=odbc_connect('northwind','','');$sql="SELECT * FROM customers";$rs=odbc_exec($conn,$sql);
复制代码



取回记录
odbc_fetch_row() 函数用于从结果集中返回记录。如果能够返回行,则函数返回 true,否则返回 false。
该函数有两个参数:ODBC 结果标识符和可选的行号:
  1. odbc_fetch_row($rs)
复制代码



从记录中取回字段
odbc_result() 函数用于从记录中读取字段。该函数有两个参数:ODBC 结果标识符和字段编号或名称。
下面的代码行从记录中返回第一个字段的值:
  1. $compname=odbc_result($rs,1);
复制代码

下面的代码行返回名为 "CompanyName" 的字段的值:
  1. $compname=odbc_result($rs,"CompanyName");
复制代码



关闭 ODBC 连接
odbc_close() 函数用于关闭 ODBC 连接。
  1. odbc_close($conn);
复制代码



ODBC 实例
下面的实例展示了如何首先创建一个数据库连接,接着创建一个结果集,然后在 HTML 表格中显示数据。
  1. <html><body><?php
  2. $conn=odbc_connect('northwind','','');if (!$conn){
  3.         exit("连接失败: " . $conn);}$sql="SELECT * FROM customers";$rs=odbc_exec($conn,$sql);if (!$rs){
  4.         exit("SQL 语句错误");}echo "<table><tr>";echo "<th>Companyname</th>";echo "<th>Contactname</th></tr>";while (odbc_fetch_row($rs)){
  5.         $compname=odbc_result($rs,"CompanyName");
  6.         $conname=odbc_result($rs,"ContactName");
  7.         echo "<tr><td>$compname</td>";
  8.         echo "<td>$conname</td></tr>";}odbc_close($conn);echo "</table>";?></body></html>
复制代码



回复

使用道具 举报

 楼主| 发表于 2019-11-19 16:50:40 | 显示全部楼层
PHP XML Expat 解析器
内建的 Expat 解析器使在 PHP 中处理 XML 文档成为可能。

XML 是什么?
XML 用于描述数据,其焦点是数据是什么。XML 文件描述了数据的结构。
在 XML 中,没有预定义的标签。您必须定义自己的标签。


Expat 是什么?
如需读取和更新 - 创建和处理 - 一个 XML 文档,您需要 XML 解析器。
有两种基本的 XML 解析器类型:
  • 基于树的解析器:这种解析器把 XML 文档转换为树型结构。它分析整篇文档,并提供了对树中元素的访问,例如文档对象模型 (DOM)。
  • 基于事件的解析器:将 XML 文档视为一系列的事件。当某个具体的事件发生时,解析器会调用函数来处理。

Expat 解析器是基于事件的解析器。
基于事件的解析器集中在 XML 文档的内容,而不是它们的结构。正因为如此,基于事件的解析器能够比基于树的解析器更快地访问数据。
请看下面的 XML 片段:
<from>Jani</from>
基于事件的解析器把上面的 XML 报告为一连串的三个事件:
  • 开始元素:from
  • 开始 CDATA 部分,值:Jani
  • 关闭元素:from

上面的 XML 实例包含了形式良好的 XML。不过这个实例是无效的 XML,因为没有与它关联的文档类型声明 (DTD)。
然而,在使用 Expat 解析器时,这没有区别。Expat 是不检查有效性的解析器,忽略任何 DTD。
作为一款基于事件、非验证的 XML 解析器,Expat 快速且轻巧,十分适合 PHP 的 Web 应用程序。
注释:XML 文档必须形式良好,否则 Expat 会生成错误。

安装
XML Expat 解析器函数是 PHP 核心的组成部分。无需安装就可以使用这些函数。

XML 文件
下面的 XML 文件将应用在我们的实例中:
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <note>
  3. <to>Tove</to>
  4. <from>Jani</from>
  5. <heading>Reminder</heading>
  6. <body>Don't forget me this weekend!</body>
  7. </note>
复制代码



初始化 XML 解析器
我们要在 PHP 中初始化 XML 解析器,为不同的 XML 事件定义处理器,然后解析这个 XML 文件。
实例
  1. <?php
  2. //Initialize the XML parser
  3. $parser=xml_parser_create();
  4. //Function to use at the start of an element
  5. function start($parser,$element_name,$element_attrs)
  6. {
  7. switch($element_name)
  8. {
  9. case "NOTE":
  10. echo "-- Note --<br>";
  11. break;
  12. case "TO":
  13. echo "To: ";
  14. break;
  15. case "FROM":
  16. echo "From: ";
  17. break;
  18. case "HEADING":
  19. echo "Heading: ";
  20. break;
  21. case "BODY":
  22. echo "Message: ";
  23. }
  24. }
  25. //Function to use at the end of an element
  26. function stop($parser,$element_name)
  27. {
  28. echo "<br>";
  29. }
  30. //Function to use when finding character data
  31. function char($parser,$data)
  32. {
  33. echo $data;
  34. }
  35. //Specify element handler
  36. xml_set_element_handler($parser,"start","stop");
  37. //Specify data handler
  38. xml_set_character_data_handler($parser,"char");
  39. //Open XML file
  40. $fp=fopen("test.xml","r");
  41. //Read data
  42. while ($data=fread($fp,4096))
  43. {
  44. xml_parse($parser,$data,feof($fp)) or
  45. die (sprintf("XML Error: %s at line %d",
  46. xml_error_string(xml_get_error_code($parser)),
  47. xml_get_current_line_number($parser)));
  48. }
  49. //Free the XML parser
  50. xml_parser_free($parser);
  51. ?>
复制代码

以上代码将输出:
-
  1. - Note --
  2. To: Tove
  3. From: Jani
  4. Heading: Reminder
  5. Message: Don't forget me this weekend!
复制代码

工作原理:
  • 通过 xml_parser_create() 函数初始化 XML 解析器
  • 创建配合不同事件处理程序的的函数
  • 添加 xml_set_element_handler() 函数来定义,当解析器遇到开始和结束标签时执行哪个函数
  • 添加 xml_set_character_data_handler() 函数来定义,当解析器遇到字符数据时执行哪个函数
  • 通过 xml_parse() 函数来解析文件 "test.xml"
  • 万一有错误的话,添加 xml_error_string() 函数把 XML 错误转换为文本说明
  • 调用 xml_parser_free() 函数来释放分配给 xml_parser_create() 函数的内存


回复

使用道具 举报

 楼主| 发表于 2019-11-19 16:52:26 | 显示全部楼层
PHP XML DOM
内建的 DOM 解析器使在 PHP 中处理 XML 文档成为可能。

DOM 是什么?
W3C DOM 提供了针对 HTML 和 XML 文档的标准对象集,以及用于访问和操作这些文档的标准接口。

W3C DOM 被分为不同的部分(Core, XML 和 HTML)和不同的级别(DOM Level 1/2/3):

* Core DOM - 为任何结构化文档定义标准的对象集
* XML DOM - 为 XML 文档定义标准的对象集
* HTML DOM - 为 HTML 文档定义标准的对象集


XML 解析
如需读取和更新 - 创建和处理 - 一个 XML 文档,您需要 XML 解析器。
有两种基本的 XML 解析器类型:
  • 基于树的解析器:这种解析器把 XML 文档转换为树型结构。它分析整篇文档,并提供了对树中元素的访问,例如文档对象模型 (DOM)。
  • 基于时间的解析器:将 XML 文档视为一系列的事件。当某个具体的事件发生时,解析器会调用函数来处理。

DOM 解析器是基于树的解析器。
请看下面的 XML 文档片段:
<?xml version="1.0" encoding="ISO-8859-1"?>
<from>Jani</from>
XML DOM 把上面的 XML 视为一个树形结构:
  • Level 1: XML 文档
  • Level 2: 根元素: <from>
  • Level 3: 文本元素: "Jani"


安装
DOM XML 解析器函数是 PHP 核心的组成部分。无需安装就可以使用这些函数。

XML 文件
下面的 XML 文件将应用在我们的实例中:
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <note>
  3. <to>Tove</to>
  4. <from>Jani</from>
  5. <heading>Reminder</heading>
  6. <body>Don't forget me this weekend!</body>
  7. </note>
复制代码



加载和输出 XML
我们需要初始化 XML 解析器,加载 XML,并把它输出:
实例
  1. <?php
  2. $xmlDoc = new DOMDocument();
  3. $xmlDoc->load("note.xml");
  4. print $xmlDoc->saveXML();
  5. ?>
复制代码

以上代码将输出:
  1. ToveJaniReminder Don't forget me this weekend!
复制代码

如果您在浏览器窗口中查看源代码,会看到下面的 HTML:
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <note>
  3. <to>Tove</to>
  4. <from>Jani</from>
  5. <heading>Reminder</heading>
  6. <body>Don't forget me this weekend!</body>
  7. </note>
复制代码

上面的实例创建了一个 DOMDocument-Object,并把 "note.xml" 中的 XML 载入这个文档对象中。
saveXML() 函数把内部 XML 文档放入一个字符串,这样我们就可以输出它。

遍历 XML
我们要初始化 XML 解析器,加载 XML,并遍历 <note> 元素的所有元素:
实例
  1. <?php
  2. $xmlDoc = new DOMDocument();
  3. $xmlDoc->load("note.xml");
  4. $x = $xmlDoc->documentElement;
  5. foreach ($x->childNodes AS $item)
  6. {
  7. print $item->nodeName . " = " . $item->nodeValue . "<br>";
  8. }
  9. ?>
复制代码

以上代码将输出:
  1. #text =
  2. to = Tove
  3. #text =
  4. from = Jani
  5. #text =
  6. heading = Reminder
  7. #text =
  8. body = Don't forget me this weekend!
  9. #text =
复制代码

在上面的实例中,您看到了每个元素之间存在空的文本节点。
当 XML 生成时,它通常会在节点之间包含空白。XML DOM 解析器把它们当作普通的元素,如果您不注意它们,有时会产生问题。

回复

使用道具 举报

 楼主| 发表于 2019-11-19 16:54:03 | 显示全部楼层
PHP SimpleXML
PHP SimpleXML 处理最普通的 XML 任务,其余的任务则交由其它扩展处理。

什么是 PHP SimpleXML?
SimpleXML 是 PHP 5 中的新特性。
SimpleXML 扩展提供了一种获取 XML 元素的名称和文本的简单方式。
与 DOM 或 Expat 解析器相比,SimpleXML 仅仅用几行代码就可以从 XML 元素中读取文本数据。
SimpleXML 可把 XML 文档(或 XML 字符串)转换为对象,比如:
  • 元素被转换为 SimpleXMLElement 对象的单一属性。当同一级别上存在多个元素时,它们会被置于数组中。
  • 属性通过使用关联数组进行访问,其中的索引对应属性名称。
  • 元素内部的文本被转换为字符串。如果一个元素拥有多个文本节点,则按照它们被找到的顺序进行排列。

当执行类似下列的基础任务时,SimpleXML 使用起来非常快捷:
  • 读取/提取 XML 文件/字符串的数据
  • 编辑文本节点或属性

然而,在处理高级 XML 时,比如命名空间,最好使用 Expat 解析器或 XML DOM。

安装
从 PHP 5 开始,SimpleXML 函数是 PHP 核心的组成部分。无需安装就可以使用这些函数。

PHP SimpleXML 实例
假设我们有如下的 XML 文件,"note.xml":
  1. <?xml version="1.0" encoding="ISO-8859-1"?><note><to>Tove</to>
  2.     <from>Jani</from>
  3.     <heading>Reminder</heading>
  4.     <body>Don't forget me this weekend!</body></note>
复制代码

现在我们想要输出上面的 XML 文件的不同信息:
实例 1
输出 $xml 变量(是 SimpleXMLElement 对象)的键和元素:
  1. <?php$xml=simplexml_load_file("note.xml");print_r($xml);?>
复制代码

以上代码将输出:
  1. SimpleXMLElement Object ( [to] => Tove [from] => Jani [heading] => Reminder [body] => Don't forget me this weekend! )
复制代码


实例 2
输出 XML 文件中每个元素的数据:
  1. <?php$xml=simplexml_load_file("note.xml");echo $xml->to . "<br>";echo $xml->from . "<br>";echo $xml->heading . "<br>";echo $xml->body;?>
复制代码


以上代码将输出:
  1. ToveJaniReminderDon't forget me this weekend!
复制代码


实例 3
输出每个子节点的元素名称和数据:
  1. <?php$xml=simplexml_load_file("note.xml");echo $xml->getName() . "<br>";
  2. foreach($xml->children() as $child){
  3.     echo $child->getName() . ": " . $child . "<br>";}?>
复制代码


以上代码将输出:
  1. note
  2. to: Tovefrom: Janiheading: Reminderbody: Don't forget me this weekend!
复制代码




回复

使用道具 举报

 楼主| 发表于 2019-11-19 16:54:45 | 显示全部楼层
AJAX 简介
AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

AJAX 是什么?
AJAX = Asynchronous JavaScript and XML.
AJAX 是一种用于创建快速动态网页的技术。
AJAX 通过在后台与服务器进行少量数据交换,使网页实现异步更新。这意味着可以在不重载整个页面的情况下,对网页的某些部分进行更新。
传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个页面。
有很多使用 AJAX 的应用程序案例:Google Maps、Gmail、Youtube 和 Facebook。

AJAX 如何工作

AJAX 基于因特网标准
AJAX 基于因特网标准,并使用以下技术组合:
  • XMLHttpRequest 对象(与服务器异步交互数据)
  • JavaScript/DOM(显示/取回信息)
  • CSS(设置数据的样式)
  • XML(常用作数据传输的格式)



谷歌搜索建议(Google Suggest)
随着谷歌搜索建议功能在 2005 的发布,AJAX 开始流行起来。
谷歌搜索建议(Google Suggest) 使用 AJAX 创造出动态性极强的 web 界面:当您在谷歌的搜索框中键入内容时,JavaScript 会把字符发送到服务器,服务器则会返回建议列表。

今天就开始使用 AJAX
在我们的 PHP 教程中,我们将演示 AJAX 如何在不重载整个页面的情况下对网页的某些部分进行更新。服务器脚本我们将采用 PHP 来编写。

回复

使用道具 举报

 楼主| 发表于 2019-11-19 16:55:46 | 显示全部楼层
PHP - AJAX 与 PHP
AJAX 被用于创建交互性更强的应用程序。

AJAX PHP 实例
下面的实例将演示当用户在输入框中键入字符时,网页如何与 Web 服务器进行通信:
实例
尝试在输入框中输入一个名字,如:Anna:
姓名:  
返回值:



实例解释 - HTML 页面
当用户在上面的输入框中键入字符时,会执行 "showHint()" 函数。该函数由 "onkeyup" 事件触发:
  1. <html><head><script>function showHint(str){
  2.         if (str.length==0)
  3.         {
  4.                 document.getElementById("txtHint").innerHTML="";
  5.                 return;
  6.         }
  7.         if (window.XMLHttpRequest)
  8.         {
  9.                 // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行的代码
  10.                 xmlhttp=new XMLHttpRequest();
  11.         }
  12.         else
  13.         {       
  14.                 //IE6, IE5 浏览器执行的代码
  15.                 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  16.         }
  17.         xmlhttp.onreadystatechange=function()
  18.         {
  19.                 if (xmlhttp.readyState==4 && xmlhttp.status==200)
  20.                 {
  21.                         document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
  22.                 }
  23.         }
  24.         xmlhttp.open("GET","gethint.php?q="+str,true);
  25.         xmlhttp.send();}</script></head><body><p><b>在输入框中输入一个姓名:</b></p><form> 姓名: <input type="text" onkeyup="showHint(this.value)"></form><p>返回值: <span id="txtHint"></span></p></body></html>
复制代码

源代码解释:
如果输入框是空的(str.length==0),该函数会清空 txtHint 占位符的内容,并退出该函数。
如果输入框不是空的,那么 showHint() 会执行以下步骤:
  • 创建 XMLHttpRequest 对象
  • 创建在服务器响应就绪时执行的函数
  • 向服务器上的文件发送请求
  • 请注意添加到 URL 末端的参数(q)(包含输入框的内容)


PHP 文件
上面这段通过 JavaScript 调用的服务器页面是名为 "gethint.php" 的 PHP 文件。
"gethint.php" 中的源代码会检查姓名数组,然后向浏览器返回对应的姓名:
  1. <?php// 将姓名填充到数组中$a[]="Anna";$a[]="Brittany";$a[]="Cinderella";$a[]="Diana";$a[]="Eva";$a[]="Fiona";$a[]="Gunda";$a[]="Hege";$a[]="Inga";$a[]="Johanna";$a[]="Kitty";$a[]="Linda";$a[]="Nina";$a[]="Ophelia";$a[]="Petunia";$a[]="Amanda";$a[]="Raquel";$a[]="Cindy";$a[]="Doris";$a[]="Eve";$a[]="Evita";$a[]="Sunniva";$a[]="Tove";$a[]="Unni";$a[]="Violet";$a[]="Liza";$a[]="Elizabeth";$a[]="Ellen";$a[]="Wenche";$a[]="Vicky";//从请求URL地址中获取 q 参数$q=$_GET["q"];//查找是否由匹配值, 如果 q>0if (strlen($q) > 0){
  2.         $hint="";
  3.         for($i=0; $i<count($a); $i++)
  4.         {
  5.                 if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
  6.                 {
  7.                         if ($hint=="")
  8.                         {
  9.                                 $hint=$a[$i];
  10.                         }
  11.                         else
  12.                         {
  13.                                 $hint=$hint." , ".$a[$i];
  14.                         }
  15.                 }
  16.         }}// 如果没有匹配值设置输出为 "no suggestion" if ($hint == ""){
  17.         $response="no suggestion";}else{
  18.         $response=$hint;}//输出返回值echo $response;?>
复制代码

解释:如果 JavaScript 发送了任何文本(即 strlen($q) > 0),则会发生:
  • 查找匹配 JavaScript 发送的字符的姓名
  • 如果未找到匹配,则将响应字符串设置为 "no suggestion"
  • 如果找到一个或多个匹配姓名,则用所有姓名设置响应字符串
  • 把响应发送到 "txtHint" 占位符


回复

使用道具 举报

 楼主| 发表于 2019-11-19 16:57:09 | 显示全部楼层
PHP - AJAX 与 MySQL
AJAX 可用来与数据库进行交互式通信。

AJAX 数据库实例
下面的实例将演示网页如何通过 AJAX 从数据库读取信息:
本教程使用到的 Websites 表 SQL 文件:websites.sql
实例 选择一个网站: Google 淘宝 菜鸟教程 微博 Facebook
选择对应选项,用户信息会显示在这……



实例解释 - MySQL 数据库
在上面的实例中,我们使用的数据库表如下所示:
  1. mysql> select * from websites;+----+--------------+---------------------------+-------+---------+| id | name         | url                       | alexa | country |+----+--------------+---------------------------+-------+---------+| 1  | Google       | https://www.google.cm/    | 1     | USA     || 2  | 淘宝       | https://www.taobao.com/   | 13    | CN      || 3  | 阿里云大学 | http://edu.aliyun.com/    | 4689  | CN      || 4  | 微博       | http://weibo.com/         | 20    | CN      || 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |+----+--------------+---------------------------+-------+---------+5 rows in set (0.01 sec)
复制代码


实例解释 - HTML 页面
当用户在上面的下拉列表中选择某位用户时,会执行名为 "showSite()" 的函数。该函数由 "onchange" 事件触发:
test.html 文件代码:
  1. <!DOCTYPE html> <html> <head> <meta charset="utf-8">
  2. <title>速学堂(openketang.com)</title> <script>
  3. function showSite(str){
  4.     if (str=="")
  5.     {
  6.         document.getElementById("txtHint").innerHTML="";        
  7.         return;    }
  8.     if (window.XMLHttpRequest)
  9.     {
  10.         // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
  11.         xmlhttp=new XMLHttpRequest();    }
  12.     else
  13.     {
  14.         // IE6, IE5 浏览器执行代码
  15.         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");    }
  16.     xmlhttp.onreadystatechange=function()
  17.     {
  18.         if (xmlhttp.readyState==4 && xmlhttp.status==200)
  19.         {
  20.             document.getElementById("txtHint").innerHTML=xmlhttp.responseText;        }
  21.     }
  22.     xmlhttp.open("GET","getsite_mysql.php?q="+str,true);    xmlhttp.send();}
  23. </script></head><body>
  24. <form><select name="users" onchange="showSite(this.value)">
  25. <option value="">选择一个网站:</option><option value="1">
  26. Google</option><option value="2">淘宝</option><option value="3">速学堂</option>
  27. <option value="4">微博</option><option value="5">Facebook</option></select>
  28. </form><br><div id="txtHint"><b>网站信息显示在这里……</b></div>
  29. </body></html>
复制代码


showSite() 函数会执行以下步骤:
  • 检查是否有网站被选择
  • 创建 XMLHttpRequest 对象
  • 创建在服务器响应就绪时执行的函数
  • 向服务器上的文件发送请求
  • 请注意添加到 URL 末端的参数(q)(包含下拉列表的内容)


PHP 文件
上面这段通过 JavaScript 调用的服务器页面是名为 "getsite_mysql.php" 的 PHP 文件。
"getsite_mysql.php" 中的源代码会运行一次针对 MySQL 数据库的查询,然后在 HTML 表格中返回结果:
getsite_mysql.php 文件代码:
  1. <?php$q = isset($_GET["q"]) ? intval($_GET["q"]) : '';
  2. if(empty($q)) {    echo '请选择一个网站';    exit;}
  3. $con = mysqli_connect('localhost','root','123456');if (!$con){   
  4. die('Could not connect: ' . mysqli_error($con));}
  5. //
  6. 选择数据库mysqli_select_db($con,"test");
  7. // 设置编码,防止中文乱码mysqli_set_charset($con, "utf8");
  8. $sql="SELECT * FROM Websites WHERE id = '".$q."'";
  9. $result = mysqli_query($con,$sql); echo "<table border='1'> <tr>
  10. <th>ID</th> <th>网站名</th> <th>网站 URL</th> <th>Alexa 排名</th>
  11. <th>国家</th> </tr>";while($row = mysqli_fetch_array($result))
  12. {    echo "<tr>";    echo "<td>" . $row['id'] . "</td>";   
  13. echo "<td>" . $row['name'] . "</td>";    echo "<td>" . $row['url'] . "</td>";   
  14. echo "<td>" . $row['alexa'] . "</td>";    echo "<td>" . $row['country'] . "</td>";    echo "</tr>";}echo "</table>"; mysqli_close($con);?>
复制代码


解释:当查询从 JavaScript 发送到 PHP 文件时,将发生:
  • PHP 打开一个到 MySQL 数据库的连接
  • 找到选中的用户
  • 创建 HTML 表格,填充数据,并发送回 "txtHint" 占位符


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩图文



在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

微信客服

Copyright   ©2015-2019  云服务器社区  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号-1 )