在多个列

时间:2016-04-03 01:06:31

标签: php mysql database mysqli

我的学校表格中每行都有一组学院名称。同一个表有四个不同的类别列,用于存储他们提供的主题的名称。我想启用一个功能,用户在桌面上进行搜索,找出教授特定主题的研究所的所有名称(例如:物理学)。特定主题的名称可以存储在四个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是搜索字符串时,所需的输出为:

  • Bansal Classes Study Center
  • Resonance Eduventures Pvt Ltd


2 个答案:

答案 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代码,而是来自其他地方。