2012-07-03 103 views
0

以下是我的search.php代码:PHP和MySQL的搜索问题

<?php 
if(isset($_POST['action']) && $_POST['action'] == "Search Question") 
{ 
$search = mysql_real_escape_string(trim(htmlspecialchars($_POST['search']))); 
$err = array(); 

if(isset($search)) 
    { 
      if(empty($search)) 
       $err[] = "Please write your question name"; 
      elseif(is_numeric($search)) 
       $err[] = "Wrong values entered"; 
     } 
     if(!empty($err)) 
     { 
      foreach($err as $er) 
      { 
       echo "<font color=red>$er<br/></font>"; 
      } 
     } 
     else 
     { 

      $search_sql = mysql_query("SELECT * FROM questions WHERE q_name LIKE '%$search%'"); 


      //$search_sql = mysql_query("SELECT * FROM questions WHERE MATCH(q_name, answer) AGAINST '$search' ");    
      $numserach = mysql_num_rows($search_sql); 

      if($numserach == 1) 
      { 
       echo "<font color='green'><strong>$numserach Question found</strong></font><br/>"; 
       while($result = mysql_fetch_array($search_sql)) 
       { 
        $subid = $result['sub_id']; 
        $id = $result['id']; 
        $qquestionsname = $result['q_name']; 

        ////////////////////////////////////////////////// SEARCH SHOW START HERE /////////////////////// 
        //include("toppagi.php"); 
        $questions = $result['q_name']; 
        echo "<a href='answerdetails.php?id=$id&subid=$subid&questionname=$qquestionsname'>$questions</a><br/>"; 
        //include("bottompagi.php"); 
        ////////////////////////////////////////////////// SEARCH SHOW END HERE /////////////////////// 
       } 
      } 
      else 
      { 
       echo "<font color=red>No Result Found</font>"; 
      } 

     } 
    } 
    ?> 

在我的数据库我试图寻找“q_name”申请在我的所有问题名称存储。如..会计,书,O级,测试No水平等

好,但如果我搜索类似的东西交流 OR TE那么它不会表现出任何结果。我需要在我搜索ACTE或别的东西,那么它的表现一些结果..

感谢提前:)

回答

1

使用此行

if($numserach > 0) 
    {..... 

代替

if($numserach == 1) 
    {..... 
+0

不错@Rab Nawaz现在工作!但我有另一个问题...找到我的搜索项目后,我看到每一个细节,但当我回去时,然后Firefox显示“DOCUMENT过期”。 – Shibbir

+0

@Shibbir,这是'POST'方法的工作原理。您可以在另一个页面中提供搜索结果,以便用户返回时不会获得此文档已过期。 – Adi

+0

非常感谢。 – Shibbir

0

将以下指令更改为th e最新:

if($numserach == 1) --> if($numserach >0) 

并重新执行脚本。

1

正如其他人已经提到的,你的问题通过更换

if($numserach == 1) 

if($numserach > 0) 

非常重要:

我这样做是对每一个问题,其中OP的数据库处理是作为倡导更好实践的一种方式,这是非常糟糕的。

请花些时间阅读关于如何使用PDO的this fine tutorial。 当你的项目被黑客入侵时(如果这是专业的工作),你将会为自己节约未来的尴尬,并且你将学习一种新的东西来保护自己,给自己一个提高应用程序性能的更好机会。

+1

本教程的随机摘录:* Oracle数据库被许多'企业'公司使用,但是这些日子里有更时髦的选择。 –

+0

@ÁlvaroG.Vicario,:D |这是我见过的最容易理解的PDO教程之一。 – Adi

+0

谢谢@Adnan Shammout – Shibbir

1

更换

if($numserach == 1) 

if($numserach > 0) 

因为此刻你只显示如果有发现只有一个学期的结果。如果它找到多个,则不会显示结果。