使用 PHP 和 JavaScript 动态搜索 SQL 表并在 HTML 上显示

Posted

技术标签:

【中文标题】使用 PHP 和 JavaScript 动态搜索 SQL 表并在 HTML 上显示【英文标题】:Dynamically search SQL table and display on HTML using PHP and JavaScript 【发布时间】:2016-08-09 14:15:45 【问题描述】:

我有一个表单,我希望用户从 SQL 表中选择一个组织,当提交表单时,应将所选组织的 ID 保存到另一个表中。我在网上和 SO 上进行了研究,这就是我现在所拥有的。它不起作用。怎么了? Newbrand.php

<form action="newbrand.php" method="post">

        Brand Name: <input type="text" name="bname" /><br><br>
        Ogranization: <input type="text" name="searchbar" id="searchbar"><br><br>
        <script>
        $("#searchbar").keyup(function()
        var searchTerm = $(this).val();

        $.post('search.php',  search_term: searchTerm, function(data)

            $(".searchResults").html(data);
            $("#searchUl").css("display", "block");
            );
        );
        </script>
        Organization ID: <input type="hidden" name="gid" value="" /><br><br>
        Gallery ID: <input type="text" name="gid" /><br><br>
</form>

搜索.php:

<?php
include 'db_connect.php';
$link = mysqli_connect($host, $username, $password, $db);

$search_term = sanitize(htmlentities($_POST['search_term']));

if (!empty($search_term))

$search = "(SELECT `Organization_Name` FROM `organizations_info` WHERE `Organization_Name` LIKE '%$search_term%'  LIMIT 0, 5) ";
$query = mysqli_query($link, $search);
$result = mysqli_num_rows($query);

while ($row = mysqli_fetch_assoc($query))
    #$user_id = $row['user_id'];
    #$username = $row['username'];
    $orgname = $row['Organization_Name'];
    $check = mysqli_num_rows($query);



    if ($check != 0)
        echo "<a style='text-decoration: none; color: black;' href='newbrand.php?band=$orgname'><li class='searchResults'>" . ucfirst($orgname) . "</li></a>";
     else 
        echo "<li class='searchResults'>No Results Found</li>";
    


?>

【问题讨论】:

【参考方案1】:

我在网上搜索了这个功能并找到了这个。我复制了你的源代码并让它像这样工作:

$search = "(SELECT Organization_Name FROM organizations_info WHERE Organization_Name LIKE '%". $search_term . "%' LIMIT 0, 5) ";

如您所见,我更改了 '%". $search_term ."%' ,因为您不能只将字符串放在“”之间的 sql 查询中,您必须将其切割成碎片,希望您现在明白了.我不经常上这个网站,所以如果它解决了问题,如果你给我发邮件到 sceptdeckheroes@gmail.com 会很酷,希望收到你的来信,祝你好运。

【讨论】:

您的语法无疑更好,但是 "WHERE Organizatiions_Name LIKE '$search_term%' " 工作,因为 % 是一个非单词字符。为了避免歧义,应该写成“... LIKE '%$search_term%'...”,但这不是问题。 好吧,我不知道,我写的代码遇到了问题,在我将它更改为带有“..”的版本后问题消失了,所以我认为这是问题,但我不是专家。也许我做了其他事情使问题消失了,无论如何,据我所知,我的代码可以正常工作。我很困惑【参考方案2】:

问题在于您的查询。它没有传递$search_term 的值,而是将其作为字符串传递。您可能希望使用准备好的语句并首先绑定参数:

$stmt = mysqli_prepare($link, "SELECT `Organization_Name` FROM `organizations_info` WHERE `Organization_Name` LIKE ? LIMIT 0, 5");
mysqli_stmt_bind_param($stmt, "s", "%$search_term%");

mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $organizaton_name);

while (mysqli_stmt_fetch($stmt)) 


参考:mysqli SELECT With Prepared Statements

【讨论】:

我在文本字段中输入时仍然没有显示 你确定$search_term 有值吗? 我不确定,如何检查?抱歉,我是新手,请多多包涵 我也是 PHP 新手。尝试在调用 sanitize 之前回显它。 我注释掉了整个 sanitize 的事情,并声明了 $search_term = $_POST['search_term'];。并在那里回显(在 search.php 中)。但是当我输入newbrand.php 时,什么也没有发生。 js有什么问题吗?里面的名字都对吗?

以上是关于使用 PHP 和 JavaScript 动态搜索 SQL 表并在 HTML 上显示的主要内容,如果未能解决你的问题,请参考以下文章

带有 javascript 和 php 的动态表单字段:它不起作用

使用 PHP 动态创建 Javascript 的更简单方法

如何在 Wix 中使用 JavaScript 代码构建动态搜索表单?

用 javascript 填充输入搜索字段(字段动态显示结果)

如何通过 php/ajax/javascript 动态检测蜂窝运营商? [关闭]

使用php另存为网页