【发布时间】:2016-04-03 01:06:31
【问题描述】:
我的学校表中的每一行都存储了一组机构名称。同一张表有四个不同的类别列,用于存储他们提供的主题的名称。我想启用一个功能,用户在表格上进行搜索以找出教授特定学科的所有机构的名称(例如:物理学)。特定主题的名称可以存储在四个category 列中的任何一个中。请建议一个 mysqli_/mysql_ 查询来进行此类搜索,或者如果您愿意,请建议一个可以实现上述功能的 PHP 脚本。
编辑:我提到下面的表结构:
Table showing column values
Table structure
添加我尝试过的所有不同查询但没有结果:
$query = mysql_query("SELECT name FROM institutes WHERE MATCH(category1, category2, category3, category4) AGAINST('$searchq' IN BOOLEAN MODE)") or die(" No records found.");
$query = mysql_query("SELECT name FROM institutes WHERE $searchq IN(category1, category2, category3, category4)") or die(" No records found.");
$query = mysql_query("SELECT name FROM institutes WHERE category1 LIKE '%$searchq%' OR category2 LIKE '%$searchq%' OR category3 LIKE '%$searchq%' OR category4 LIKE '%$searchq%' OR category5 LIKE '%$searchq%'") or die(" No records found.");
搜索表单:
<div class="row col-md-6 col-md-offset-2">
<div class="col-lg-6">
<div class="input-group">
<form action="search_results.php" method = "post">
<input type="text" name="search" class="form-control" placeholder="Search by subjects...">
<span class="input-group-btn">
<button class="btn btn-default" type="button submit">Go!</button>
</span>
</form>
</div><!-- /input-group -->
</div>
</div>
整个PHP代码:
<?php
mysql_connect("localhost", "root", "secretpassword") or die("could not connect.");
mysql_select_db("edhoc") or die("could not find database.");
$result = "";
//collect info from database
if(isset($_POST['search'])) {
$searchq = $_POST['search'];
$searchq = preg_replace("#[^0-9a-z]#i", "", $searchq);
//echo $searchq;
//SQL query
$query = mysql_query("SELECT name FROM institutes WHERE category1 = '$searchq' OR category2 = '$searchq' OR category3 = '$searchq' OR category4 = '$searchq' OR category5 = '$searchq'") or die(" No records found.");
$count = mysql_num_rows($query);
if($count == 0) {
$output = "There's no search result";
} else {
while($array = mysql_fetch_assoc($query)) {
?>
<li><?php echo $array['name'];?></li>
<?php
}
}
}
?>
它们都没有产生所需的输出。
当physics 是搜索字符串时,当前输出为:
物理 没有找到记录。
当physics 是搜索字符串时,所需的输出是:
- Bansal Classes 学习中心
- Resonance Eduventures Pvt Ltd
【问题讨论】:
-
这是您在 24 小时内第三次问同样的问题。这(多次问同一个问题)在 Stack Overflow 上被认为是非常粗鲁的。
-
@NineBerry 我很抱歉。我无意无礼。如果有的话,我很绝望。
-
1.见标准化。绝望。
-
如果启用 echo $searchq 输出是什么?我怀疑它是空的。没有输入发送到名称搜索的表单,或者您只是在编辑错误的文件。添加带有“test”之类的字符串的回显,以查看您是否实际上正在处理正在执行的文件。