2013-08-12 5 views
0

질문으로는 var_char (50)를 기본 키로 사용하는 내 product_name의 첫 번째 단어 만 가져 왔습니다.PHP 검색 스크립트는 첫 번째 단어 만 가져옵니다.

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
$search_output = ""; 
if(isset($_POST['searchquery']) && $_POST['searchquery'] != ""){ 
    $searchquery = $_POST['searchquery']; 
    if($_POST['filter1'] == "Whole Site"){ 
    $sqlCommand = "SELECT * FROM products WHERE MATCH (product_name ,details,category,subcategory) AGAINST ('".$searchquery."' IN BOOLEAN MODE)"; 
    } 
    require_once("storescripts/connect_to_mysqli.php"); 
    $query = mysqli_query($myConnection,$sqlCommand) or die(mysqli_error($myConnection)); 
    $count = mysqli_num_rows($query); 
    if($count > 1){ 
     $search_output .= "<hr />$count results for <strong>$searchquery</strong><hr />$sqlCommand<hr />"; 
     while($row = mysqli_fetch_array($query)){ 
       $id=$row["id"]; 
      $product_name = $row["product_name"]; 
        $details= $row["details"]; 
       $category=$row["category"]; 
       $subcategory=$row["subcategory"]; 
      $search_output .= "ID: $id <br/> Name: $product_name -<br/>$details<br />$category<br/>$subcategory<br/> 
<a href='product.php?id=$id'>link</a><br/> 

"; 
     } // close while 
    } else { 
     $search_output = "<hr />0 results for <strong>$searchquery</strong><hr />$sqlCommand"; 
    } 
} 
?> 
<html> 
<head> 
</head> 
<body> 
<h2>Search the Exercise Tables</h2> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
Search For: 
    <input name="searchquery" type="text" size="44" maxlength="88"> 
Within: 
<select name="filter1"> 
<option value="Whole Site">Whole Site</option> 

</select> 
<input name="myBtn" type="submit"> 
<br /> 
</form> 
<div> 
<?php echo $search_output; ?> 
</div> 
</body> 

는 기본 키는 것을이 때문이다? some..i가 나는 것은 실제로 완전히 confused..it 내가뿐만 아니라 위의 코드를 시도 어떤 감각

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
require_once("storescripts/connect_to_mysqli.php"); 
$search_output = ""; 

if(isset($_POST['searchquery']) && $_POST['searchquery'] != ""){ 
    $searchquery = $_POST['searchquery']; 
    if($_POST['filter1'] == "Whole Site"){ 
$sqlCommand = sprintf("SELECT * FROM products WHERE product_name LIKE '%s%%'", 
       mysqli_real_escape_string($myConnection, $searchquery)); 
    } 

    $query = mysqli_query($myConnection,$sqlCommand) or die(mysqli_error($myConnection)); 
    $count = mysqli_num_rows($query); 
    if($count > 1){ 
     $search_output .= "<hr />$count results for <strong>$searchquery</strong><hr />$sqlCommand<hr />"; 
     while($row = mysqli_fetch_array($query)){ 
       $id=$row["id"]; 
      $product_name = $row["product_name"]; 
        $details= $row["details"]; 
       $category=$row["category"]; 
       $subcategory=$row["subcategory"]; 
      $search_output .= "ID: $id <br/> Name: $product_name -<br/>$details<br />$category<br/>$subcategory<br/> 
<a href='product.php?id=$id'>link</a><br/> 

"; 
     } // close while 
    } else { 
     $search_output = "<hr />0 results for <strong>$searchquery</strong><hr />$sqlCommand"; 
    } 
} 





?> 
<html> 
<head> 
</head> 
<body> 
<h2>Search the Exercise Tables</h2> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
Search For: 
    <input name="searchquery" type="text" size="44" maxlength="88"> 
Within: 
<select name="filter1"> 
<option value="Whole Site">Whole Site</option> 

</select> 
<input name="myBtn" type="submit"> 
<br /> 
</form> 
<div> 
<?php echo $search_output; ?> 
</div> 
</body> 
</html> 

을하지 않는 대부분의 단어 만 작업 작동하지 않는 사실뿐만 아니라, 내용은 매우 이상한 그것을 작동하지 그리고 product_name으로 좁혀, 예를 들어 아직 보이지 않는다. 나는 '오메가 물고기'라고 입력했는데, '물고기'라고 입력하면 '오메가 물고기'라고 입력했다. 단 하나의 물건이 보이지 않는다면, 내가 입력하면 'omega '가 작동한다.

I 이것을 포기하고 LIKE 기능으로 시도한 것이 더 좋지만 여전히 재미 있다고 생각됩니다. 관심있는 사람들을 위해이 링크를 참조하십시오.

PHP search script for mySQL database, only 3 letter working

감사

+0

당신은 디버깅나요 ? 쿼리 자체가 잘못된 결과를 제공합니다 (예 : 사용자 입력과 같은 문제는 없습니다)? –

+0

$ _POST [ 'filter1']! = "전체 사이트"인 경우 대체 $ sqlCommand 문을 설정하지 않아 $ sqlCommand가 null입니다. – jeff

+0

결과 페이지의 html 소스 코드를 확인 했습니까? – Cups

답변

관련 문제