使用 Ajax 从数据库获取数据

Using Ajax to bring data from database

本文关键字:获取 数据 数据库 Ajax 使用      更新时间:2023-09-26

我正在寻找的基本上是一种使用 ajax 从数据库获取数据的方法。

每次人们将mouseover类别名称时,我希望此类别的数据在div中弹出。

由于某种原因,while 循环什么都不做。

这是我第一次使用ajax,而且我在php也不是那么专业。

function showCat(str) {
    if (str == "") {
        document.getElementById("txtHint").innerHTML = "";
        return;
    } else { 
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
            }
        };
        xmlhttp.open("GET","getcat.php?q="+str,true);
        xmlhttp.send();
    }
}
<?php
$q = intval($_GET['q']);
$con = mysqli_connect('localhost','ipattcoi','6#uP!AR3G_','patt_db');
if (!$con) {
    die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,"patt_db");
$sql="SELECT * FROM products WHERE category = '".$q."'";
$result = mysqli_query($con,$sql);
echo "<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
<th>Hometown</th>
<th>Job</th>
</tr>";
while($row = mysqli_fetch_array($result)) 
{
    echo "<tr>";
    echo "<td>" . $row['product_id'] . "</td>";
    echo "<td>" . $row['product_name'] . "</td>";
    echo "<td>" . $row['product_pic'] . "</td>";
    echo "<td>" . $row['category'] . "</td>";
    echo "</tr>";
}
echo "</table>";
mysqli_close($con);
?>

我假设"txtHint"是您希望通过AJAX请求显示类别详细信息的div。

确保您的 select 语句检索类别的值。 如果它不存在任何记录,则 while 循环不执行任何操作。

一个。 查询区分大小写。 $q可能提供类别为"三星",但在您的数据库中它存储为"三星",反之亦然。 通过将 sql 中的比较转换为大写或小写来解决此问题。b. 检查数据库中是否已存在$q值。 通过添加或删除网页或数据库中类别列表中的项目来解决此问题。

这与问题无关 - 表标题与数据库中的列不匹配。

您的代码有效,我能够以最少的修改复制并运行它(只是为了重用我现有的表),因此请检查以下内容:

1)检查表中是否有数据,使用任何mysql客户端(命令行工具,phpmyamdin等)

2)直接调用你的getcat.php脚本,看看它是否真的返回表(如 http://my.server.name/getcat.php?q=something'),只需在浏览器中打开这样的URL

3)如果上述工作 - 打开执行ajax请求的HTML页面,打开开发人员工具(chrome和Firefox中的F12),找到"控制台",您可以在其中看到js错误。触发请求并检查错误。

除此之外,我希望您的代码只是出于某种学习目的,而不是用于实时应用程序/网站。因为您创作$sql字符串的方式非常危险,因此请参阅示例。

在实际应用程序中,我还会做其他不同的事情:

  • 在客户端 - 使用 jQuery 或其他库来执行 AJAX 请求,虽然XMLHttpRequest是一种有效的请求方式,但您可能会发现在实际应用程序中,您必须编写更多代码来处理不同的浏览器和不同的用例。
  • 在服务器上 - 读取数据并将其转换为 JSON,将 JSON 发送到客户端并将其格式化/插入到客户端。同样,有一些库可以帮助您。目前不好的是你在php代码中有一部分html
  • 同样对于真正的应用程序,我会在 php 端使用一些框架(Yii、Laravel 等)