【问题标题】:Dynamically search SQL table and display on HTML using PHP and JavaScript使用 PHP 和 JavaScript 动态搜索 SQL 表并在 HTML 上显示
【发布时间】: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>";
    }
}
}
?>

【问题讨论】:

    标签: javascript php html mysql sql


    【解决方案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有什么问题吗?里面的名字都对吗?
    猜你喜欢
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 2010-09-13
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    相关资源
    最近更新 更多