我的学校表格中每行都有一组学院名称。同一个表有四个不同的类别列,用于存储他们提供的主题的名称。我想启用一个功能,用户在桌面上进行搜索,找出教授特定主题的研究所的所有名称(例如:物理学)。特定主题的名称可以存储在四个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没有找到记录。
当physics
是搜索字符串时,所需的输出为:
答案 0 :(得分:1)
我们不太可能回答,因为您没有提供易于阅读的表格结构,因此我将假设一个。
Select school from schooltable where subject1=? or subject2=? or subject3=?
?是搜索查询,如果您无法在php回复中实现它,我会为您编写。 如果我没有找到你,那么你的问题就是你没有解释的。
答案 1 :(得分:0)
您有以下命令:
$query = mysql_query("SELECT ....") or die("No records found.");
然而,当执行骰子部分时(由于“未找到记录”被输出似乎是这种情况),那么这并不意味着没有找到记录。这意味着执行sql语句时出错。所以要么sql语句中有错误,要么数据库连接有问题。修改这样的行以获取特定的错误消息:
$query = mysql_query("SELECT ....") or die(mysql_error());
由于sql语句失败了,但你仍然会列出相同的五个机构名称(甚至在错误消息之前),这意味着你看到的机构名称列表不是来自你问题中的php代码,而是来自其他地方。