Я пытаюсь выполнить поиск php в базе данных mySQL. следующий код работает смешно, он обнаруживает очень хорошо, когда я только ввел 3 буквы. У меня есть имя продукта «deepbluehealth omega», если я набираю «ome», который он взял, если я набираю «ega», он подбирается, если i type 'omega' не показывает результат, также если я набираю 'deepbluehealth', это не проблема.
<?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 id, product_name FROM products WHERE product_name LIKE '%$searchquery%' OR details LIKE '%$searchquery%') "; } 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> </html>
Вот ваша проблема:
if($count > 1){
Это должно быть:
if($count > 0){
Для учета случая, когда имеется ровно один результат. Вероятно, это единственный продукт, который соответствует «омеге», но в каждом другом случае другой продукт оказался подходящим.
Хорошая случайная функция, которую я не могу объяснить только на основе кода, не могли бы вы дать нам структуру таблицы / с индексами и некоторыми примерами данных?
Дополнительные советы
Не используйте $ _SERVER ['PHP_SELF'], если вы хотите опубликовать эту страницу на той же странице, потому что от атак скрещенных сторон, которые могут произойти сейчас, или должны использовать
<form action="" method="post">
Да, вы должны оставить действие пустым
А также
Запустите $ search_output, когда вы эхо-сигнал через функцию htmlentities, чтобы встретить против большинства перекрестных сценариев атаки.