使用 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 会很酷,希望收到你的来信,祝你好运。
【讨论】:
您的语法无疑更好,但是 "WHEREOrganizatiions_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 的动态表单字段:它不起作用
如何在 Wix 中使用 JavaScript 代码构建动态搜索表单?
用 javascript 填充输入搜索字段(字段动态显示结果)