• PHP - AJAX 与 MySQL


    AJAX 可用来与数据库进行交互式通信。


    AJAX 数据库实例

    下面的实例将演示网页如何通过 AJAX 从数据库读取信息:

    本教程使用到的 Websites 表 SQL 文件:websites.sql

    实例

     选择一个网站: Google /淘宝 /微博/ Facebook 

    选择对应选项,用户信息会显示在这……

    实例解释 - MySQL 数据库

    在上面的实例中,我们使用的数据库表如下所示:

    1. mysql> select * from websites;
    2. +----+--------------+---------------------------+-------+---------+
    3. | id | name | url | alexa | country |
    4. +----+--------------+---------------------------+-------+---------+
    5. | 1 | Google | https://www.google.cm/ | 1 | USA |
    6. | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN |
    7. | 3 | 微博 | http://weibo.com/ | 20 | CN |
    8. | 4 | Facebook | https://www.facebook.com/ | 3 | USA |
    9. +----+--------------+---------------------------+-------+---------+
    10. 5 rows in set (0.01 sec)

    实例解释 - HTML 页面

    当用户在上面的下拉列表中选择某位用户时,会执行名为 "showSite()" 的函数。该函数由 "onchange" 事件触发:

    test.html 文件代码:

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>菜鸟教程(runoob.com)</title>
    6. <script>
    7. function showSite(str)
    8. {
    9. if (str=="")
    10. {
    11. document.getElementById("txtHint").innerHTML="";
    12. return;
    13. }
    14. if (window.XMLHttpRequest)
    15. {
    16. // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
    17. xmlhttp=new XMLHttpRequest();
    18. }
    19. else
    20. {
    21. // IE6, IE5 浏览器执行代码
    22. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    23. }
    24. xmlhttp.onreadystatechange=function()
    25. {
    26. if (xmlhttp.readyState==4 && xmlhttp.status==200)
    27. {
    28. document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    29. }
    30. }
    31. xmlhttp.open("GET","getsite_mysql.php?q="+str,true);
    32. xmlhttp.send();
    33. }
    34. </script>
    35. </head>
    36. <body>
    37. <form>
    38. <select name="users" onchange="showSite(this.value)">
    39. <option value="">选择一个网站:</option>
    40. <option value="1">Google</option>
    41. <option value="2">淘宝</option>
    42. <option value="3">微博</option>
    43. <option value="4">Facebook</option>
    44. </select>
    45. </form>
    46. <br>
    47. <div id="txtHint"><b>网站信息显示在这里……</b></div>
    48. </body>
    49. </html>

    showSite() 函数会执行以下步骤:

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

    PHP 文件

    上面这段通过 JavaScript 调用的服务器页面是名为 "getsite_mysql.php" 的 PHP 文件。

    "getsite_mysql.php" 中的源代码会运行一次针对 MySQL 数据库的查询,然后在 HTML 表格中返回结果:

    getsite_mysql.php 文件代码:

    1. $q = isset($_GET["q"]) ? intval($_GET["q"]) : '';
    2. if(empty($q)) {
    3. echo '请选择一个网站';
    4. exit;
    5. }
    6. $con = mysqli_connect('localhost','root','123456');
    7. if (!$con)
    8. {
    9. die('Could not connect: ' . mysqli_error($con));
    10. }
    11. // 选择数据库
    12. mysqli_select_db($con,"test");
    13. // 设置编码,防止中文乱码
    14. mysqli_set_charset($con, "utf8");
    15. $sql="SELECT * FROM Websites WHERE id = '".$q."'";
    16. $result = mysqli_query($con,$sql);
    17. echo "
    18. ";
    19. while($row = mysqli_fetch_array($result))
    20. {
    21. echo "
    22. ";
    23. echo "
    24. ";
    25. echo "
    26. ";
    27. echo "
    28. ";
    29. echo "
    30. ";
    31. echo "
    32. ";
    33. echo "
    34. ";
    35. }
    36. echo "
    37. ID网站名网站 URLAlexa 排名国家
      " . $row['id'] . "" . $row['name'] . "" . $row['url'] . "" . $row['alexa'] . "" . $row['country'] . "
      "
      ;
    38. mysqli_close($con);
    39. ?>

    解释:当查询从 JavaScript 发送到 PHP 文件时,将发生:

    1. PHP 打开一个到 MySQL 数据库的连接
    2. 找到选中的用户
    3. 创建 HTML 表格,填充数据,并发送回 "txtHint" 占位符
  • 相关阅读:
    EnvoyFilter实践: 通过解析子域名注入环境标识
    python_logging日志模块按大小和时间分割方法
    从零开始的力扣刷题记录-第八十七天
    Mac M3 Pro 安装 Zookeeper-3.4.6
    【kubernetes篇】通过描述信息,理解Pod生命周期
    可视化概述
    面试题:“中国浙江杭州”这样的一串字符串有多少个不重复的排序组合?
    qt的一些自绘控件
    Vue3 中还处在实验性阶段 Suspense 是个啥?
    一文教你在 centos7 下安装 Oracle19 C(完整版)
  • 原文地址:https://blog.csdn.net/unbelievevc/article/details/126616725