php - 当 Match Against 函数在 Mysql 中没有给出任何结果时,LIKE 函数会给我更好的结果吗

标签 php mysql mysqli

目前,当我在搜索引擎中输入“M”时,尽管数据库中有“Math”值,但我没有得到任何结果。 (我在我的网站上使用mysql的Match Against功能)。所以我决定编写一个代码,首先运行 Match Against 函数,如果没有获得输出,它会再次运行搜索,但这次使用我的 sql 的“LIKE”函数,如果仍然没有获得结果,它会显示警报“无值”成立'。 代码要点有点像这样..

mysql(Match against function)
If (mysqli_num_rows > 0) 
{output}
elseif (mysqli_num_rows < 1)
{ mysqli (LIKE function)
  then show output}
else {show alert'no results'}

当我在搜索引擎中输入“M”时,这段代码会给出结果“Math”吗?

实际代码。

<?php   
            if (isset($_POST['go']))
                    {  $search = $_POST['search'];
                       $college = $_POST['colleges'];
                        if (!empty($search))
                        {
                           if(isset($_POST['colleges']) )
                           {

                            $query1 = "Select filename, description, groupid, emailid, college, upload_date FROM images WHERE MATCH(description) AGAINST('$search') AND college = '$college' group by groupid order by MATCH(description) AGAINST('$search') DESC";
                            $query_run1 = mysqli_query($con, $query1) ; 


                           }
                           else
                          {

                        $query1 = "Select filename, description, groupid, emailid, college,upload_date FROM images WHERE MATCH(description) AGAINST('$search') group by groupid order by MATCH(description) AGAINST('$search') DESC";
                            $query_run1 = mysqli_query($con, $query1) ; 



                            $searchresults = mysqli_num_rows($query_run1);
                            ?><p class = "totalresults"> <br />
                              <br /> &nbsp &nbsp <font size= "4" >Total Results : 
                             <?php
                            echo $searchresults ;
                            ?>
                            </font> </p> 
                            <?php
                            if(mysqli_num_rows($query_run1)>0)
                            {

                                ?>
                                 <table class="searchenginelist" style="color: black;">
                                       <tr>
                                        <th> Uploader </th>
                                        <th> Title </th>
                                        <th> Date </th>
                                        <th> Upvotes </th>
                                        <th> Downvotes </th>
                                        <th> College </th>
                                        </tr>
                                <?php
                                   while( $rows = mysqli_fetch_assoc($query_run1))
                                   { 
                                       //$imagedisplay = $rows['file'];
                                       $imagename = $rows['filename'];
                                      // mysqli_real_escape_string($con,$imagedisplay);
                                       $descrip = $rows['description'];
                                       $groupid = $rows['groupid'];
                                       //$groupid = $_SESSION['groupid'] ;
                                       $uploader_emailid = $rows['emailid'];
                                       $college = $rows['college'];


         ?>


                    <tr>
                    <td width="70px"> <?php 
                       $query = " SELECT username from userinfo WHERE emailid = '$uploader_emailid' " ;
                           $query_run = mysqli_query($con,$query );
                       $raw = mysqli_fetch_assoc($query_run);
                       echo  $raw['username']; ?>
                   </td>
                   <td width="450px">  <a href="imagespace.php?groupid=<?php echo $groupid ;?>"> 
                       <?php echo $descrip ; ?> 
                    </a>
                   </td>
                   <td style="font-size:15px;" width="85px">    
                   <?php echo $rows['upload_date'] ; ?>
                   </td> 
                   <td align="center" style="color:green;" width="50px">
                     <?php
                      $query = "SELECT vote from votes where groupid = '$groupid' and vote = '1' "; 
                                     $query_run= mysqli_query($con, $query);
                                      $upvote=mysqli_num_rows($query_run) ;
                                      echo $upvote;
                                     ?> 
                </td>
                <td align="center" style="color:red;" width="50px">
                   <?php
                      $query = "SELECT vote from votes where groupid = '$groupid' and vote = '0' "; 
                                     $query_run= mysqli_query($con, $query);
                                      $downvote=mysqli_num_rows($query_run) ;
                                      echo $downvote;
                                      ?>
                   </td>
                   <td style="font-size:13px;" width="130px">
                     <?php echo $college; ?> 
                    </td>
                   </tr>
                                   <?php
                                   }
                                   ?>
                                   </table>
                                   <?php
                            } 
                            elseif(mysqli_num_rows($query_run1) < 1)
                            {
                            $query12 = "Select * FROM images WHERE description LIKE '%".mysqli_real_escape_string($con,$search)."%' group by groupid order by groupid DESC";
                            $query_run12 = mysqli_query($con, $query12) ; 
                             ?>  <table class="searchenginelist" style="color: black;">
                                       <tr>
                                        <th> Uploader </th>
                                        <th> Title </th>
                                        <th> Date </th>
                                        <th> Upvotes </th>
                                        <th> Downvotes </th>
                                        <th> College </th>
                                        </tr>
                            <?php       
                             while( $rows = mysqli_fetch_assoc($query_run12))
                                   { 
                                       //$imagedisplay = $rows['file'];
                                       $imagename = $rows['filename'];
                                      // mysqli_real_escape_string($con,$imagedisplay);
                                       $descrip = $rows['description'];
                                       $groupid = $rows['groupid'];
                                       //$groupid = $_SESSION['groupid'] ;
                                       $uploader_emailid = $rows['emailid'];
                                       $college = $rows['college'];

                ?> 
                    <tr>
                    <td width="70px"> <?php 
                       $query = " SELECT username from userinfo WHERE emailid = '$uploader_emailid' " ;
                           $query_run = mysqli_query($con,$query );
                       $raw = mysqli_fetch_assoc($query_run);
                       echo  $raw['username']; ?>
                   </td>
                   <td width="450px">  <a href="imagespace.php?groupid=<?php echo $groupid ;?>"> 
                       <?php echo $descrip ; ?> 
                    </a>
                   </td>
                   <td style="font-size:15px;" width="85px">    
                   <?php echo $rows['upload_date'] ; ?>
                   </td> 
                   <td align="center" style="color:green;" width="50px">
                     <?php
                      $query = "SELECT vote from votes where groupid = '$groupid' and vote = '1' "; 
                                     $query_run= mysqli_query($con, $query);
                                      $upvote=mysqli_num_rows($query_run) ;
                                      echo $upvote;
                                     ?> 
                </td>
                <td align="center" style="color:red;" width="50px">
                   <?php
                      $query = "SELECT vote from votes where groupid = '$groupid' and vote = '0' "; 
                                     $query_run= mysqli_query($con, $query);
                                      $downvote=mysqli_num_rows($query_run) ;
                                      echo $downvote;
                                      ?>
                   </td>
                   <td style="font-size:13px;" width="130px">
                     <?php echo $college; ?> 
                    </td>
                       </tr>


                            }
                            ?>
                            </table>
                            <?php
                            }
                            else
                            {
                                echo '<script type="text/javascript"> alert ("No results found") </script>' ;
                            }
                        }
                        else
                        { echo '<script type="text/javascript"> alert ("No data entered") </script>';
                        }
                        }
                    }

最佳答案

您的代码中存在一些语法问题,您的 else 语句未正确排列,因此您的页面无法正常工作。 (例如,您有一个 } else { 与另一个 } else { 对齐)。

我检查了所有代码并对其进行了格式化,以便我可以看到问题所在,记住,一些合理的代码缩进将是一个好主意。 它可以帮助我们阅读代码,更重要的是,它可以帮助您调试代码Take a quick look at a coding standard为了您自己的利益。 您可能会被要求在几周/几个月内修改此代码,您最终会感谢我。

<?php   
if (isset($_POST['go'])) {  
    $search = $_POST['search'];
    $college = $_POST['colleges'];
    if (!empty($search)) {
        if(isset($_POST['colleges']) ) {

            $query1 = "Select filename, description, groupid, emailid, college, upload_date FROM images WHERE MATCH(description) AGAINST('$search') AND college = '$college' group by groupid order by MATCH(description) AGAINST('$search') DESC";
            $query_run1 = mysqli_query($con, $query1); 

        } else {

            $query1 = "Select filename, description, groupid, emailid, college,upload_date FROM images WHERE MATCH(description) AGAINST('$search') group by groupid order by MATCH(description) AGAINST('$search') DESC";
            $query_run1 = mysqli_query($con, $query1); 
            $searchresults = mysqli_num_rows($query_run1);

            ?>
                <p class = "totalresults"> 
                    <br />
                    <br /> 
                    &nbsp &nbsp <font size= "4" >Total Results: <?php echo $searchresults; ?></font> 
                </p> 
            <?php

                if(mysqli_num_rows($query_run1)>0) {

                ?>
                    <table class="searchenginelist" style="color: black;">
                    <tr>
                        <th> Uploader </th>
                        <th> Title </th>
                        <th> Date </th>
                        <th> Upvotes </th>
                        <th> Downvotes </th>
                        <th> College </th>
                    </tr>
                <?php
                    while( $rows = mysqli_fetch_assoc($query_run1)) { 
                        //$imagedisplay = $rows['file'];
                        $imagename = $rows['filename'];
                        // mysqli_real_escape_string($con,$imagedisplay);
                        $descrip = $rows['description'];
                        $groupid = $rows['groupid'];
                        //$groupid = $_SESSION['groupid'] ;
                        $uploader_emailid = $rows['emailid'];
                        $college = $rows['college'];

                ?>


                    <tr>
                        <td width="70px"> 
                            <?php 
                                $query = " SELECT username from userinfo WHERE emailid = '$uploader_emailid' " ;
                                $query_run = mysqli_query($con,$query );
                                $raw = mysqli_fetch_assoc($query_run);
                                echo  $raw['username']; 
                            ?>
                        </td>
                        <td width="450px">  
                            <a href="imagespace.php?groupid=<?php echo $groupid ;?>"> 
                                <?php 
                                    echo $descrip; 
                                ?> 
                            </a>
                        </td>
                        <td style="font-size:15px;" width="85px">    
                            <?php 
                                echo $rows['upload_date'] ; 
                            ?>
                        </td> 
                        <td align="center" style="color:green;" width="50px">
                            <?php
                                $query = "SELECT vote from votes where groupid = '$groupid' and vote = '1' "; 
                                $query_run= mysqli_query($con, $query);
                                $upvote=mysqli_num_rows($query_run) ;
                                echo $upvote;
                            ?> 
                        </td>
                        <td align="center" style="color:red;" width="50px">
                            <?php
                                $query = "SELECT vote from votes where groupid = '$groupid' and vote = '0' "; 
                                $query_run= mysqli_query($con, $query);
                                $downvote=mysqli_num_rows($query_run) ;
                                echo $downvote;
                            ?>
                        </td>
                        <td style="font-size:13px;" width="130px">
                            <?php 
                                echo $college; 
                            ?> 
                        </td>
                    </tr>

                <?php
                    } //end while loop
                ?>
                    </table>
                <?php
                } else if(mysqli_num_rows($query_run1) < 1) {
                    $query12 = "Select * FROM images WHERE description LIKE '%".mysqli_real_escape_string($con,$search)."%' group by groupid order by groupid DESC";
                    $query_run12 = mysqli_query($con, $query12) ; 
                    ?>  
                        <table class="searchenginelist" style="color: black;">
                            <tr>
                                <th> Uploader </th>
                                <th> Title </th>
                                <th> Date </th>
                                <th> Upvotes </th>
                                <th> Downvotes </th>
                                <th> College </th>
                            </tr>
                <?php       
                    while( $rows = mysqli_fetch_assoc($query_run12)) {
                        //$imagedisplay = $rows['file'];
                        $imagename = $rows['filename'];
                        // mysqli_real_escape_string($con,$imagedisplay);
                        $descrip = $rows['description'];
                        $groupid = $rows['groupid'];
                        //$groupid = $_SESSION['groupid'] ;
                        $uploader_emailid = $rows['emailid'];
                        $college = $rows['college'];

                ?> 
                            <tr>
                                <td width="70px"> 
                                    <?php 
                                        $query = " SELECT username from userinfo WHERE emailid = '$uploader_emailid' " ;
                                        $query_run = mysqli_query($con,$query );
                                        $raw = mysqli_fetch_assoc($query_run);
                                        echo  $raw['username']; 
                                    ?>
                                </td>
                                <td width="450px">  
                                    <a href="imagespace.php?groupid=<?php echo $groupid ;?>"> 
                                        <?php 
                                            echo $descrip ; 
                                        ?> 
                                    </a>
                                </td>
                                <td style="font-size:15px;" width="85px">    
                                    <?php 
                                        echo $rows['upload_date'] ; 
                                    ?>
                                </td> 
                                <td align="center" style="color:green;" width="50px">
                                    <?php
                                        $query = "SELECT vote from votes where groupid = '$groupid' and vote = '1' "; 
                                        $query_run= mysqli_query($con, $query);
                                        $upvote=mysqli_num_rows($query_run) ;
                                        echo $upvote;
                                    ?> 
                                </td>
                                <td align="center" style="color:red;" width="50px">
                                    <?php
                                        $query = "SELECT vote from votes where groupid = '$groupid' and vote = '0' "; 
                                        $query_run= mysqli_query($con, $query);
                                        $downvote=mysqli_num_rows($query_run) ;
                                        echo $downvote;
                                    ?>
                                </td>
                                <td style="font-size:13px;" width="130px">
                                    <?php 
                                        echo $college; 
                                    ?> 
                                </td>
                            </tr>


                        </table>
                <?php
                    } //end while loop
            } else { //num rows < 1
                echo '<script type="text/javascript"> alert ("No results found") </script>' ;
            }
        }
    } else { //no searches returned
        echo '<script type="text/javascript"> alert ("No data entered") </script>';
    }
}

我还建议,对于非常复杂的嵌套结构,注释每个结束括号的内容,就像我在代码中所做的那样。我添加了注释,以便我可以准确地看到 } 的结尾。

WARNING: This code may be vulnerable to SQL Injection Attacks. You should Learn about Prepared Statements for MySQLi or PDO. I recommend PDO, which I wrote a function for to make it extremely easy, very clean, and way more secure than using non-parameterized queries.

关于php - 当 Match Against 函数在 Mysql 中没有给出任何结果时,LIKE 函数会给我更好的结果吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45695812/

相关文章:

php - 如何在 WooCommerce 中按时期获得最畅销的产品

php - 我的 php echo row ['Date' ] 不知怎的就消失了

php - Eloquent 多表查询

PHP/MYSql 按名称、日期、alpha 等对数据库条目进行排序

php - htaccess重定向问题

php - 绑定(bind) boolean 值的 bind_param 问题

java - PHP:将分隔的逗号字符串值与多个数组值插入到 MySql 中

php - Youtube Data API V3访问订阅者数量

php - 使用 jQuery 在 XML 中设置新属性

php - 为什么有些数据没有保存在我的数据库中?