질문으로는 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
감사
당신은 디버깅나요 ? 쿼리 자체가 잘못된 결과를 제공합니다 (예 : 사용자 입력과 같은 문제는 없습니다)? –
$ _POST [ 'filter1']! = "전체 사이트"인 경우 대체 $ sqlCommand 문을 설정하지 않아 $ sqlCommand가 null입니다. – jeff
결과 페이지의 html 소스 코드를 확인 했습니까? – Cups