Я создал простой поисковый запрос. Когда пользователь заполняет вход и отправляет его, он создает поисковый запрос, который получается из информации о базе данных, которая соответствует указанным ключевым словам.php - Поисковый запрос
Но когда я посылаю ключевые слова, дает мне ошибку:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\www.c++.com\search-query.php on line 59
Результаты не найдены для "C++"
мой файл PHP выглядит следующим образом:
<form id="search" method="get" action="search-query.php">
<input type="text" name="keywords" placeholder="Search..." />
<input type="submit" value="Go" style="margin:10px" />
</form>
и поисковый запрос:
<form id="search" method="get" action="search-query.php">
<input type="text" name="keywords" placeholder="Search..." value="<?php echo $_GET['keywords']; ?>" />
<input type="submit" value="Go" style="margin:10px" />
</form>
<div>
<?php
$i = 0;
$keywords = $_GET['keywords'];
$terms = explode(" ",$keywords);
$query = "SELECT * FROM search WHERE ";
foreach ($terms as $term){
$i++;
if ($i == 1)
$query .="keywords LIKE '%$term%' ";
else
$query .= "OR keywords LIKE '%$term%' ";
}
//connect
mysql_connect("localhost", "root", "");
mysql_select_db("search");
$query = mysql_query($query);
$numrows = mysql_num_rows($query);
if($numrows > 0){
while ($row = mysql_fetch_assoc($query)){
$id = $row['id'];
$title = $row['title'];
$description = $row['description'];
$key = $row['keywords'];
$link = $row['link'];
}
echo "<h2><a href='$link'>$title</a></h2>
$descripton";
} else echo "No results found for \"<b>$keywords</b>\"";
//disconnect
mysql_close();
?>
</div>
Я не знаю, почему моя переменная $query
является логическим типом. Если anybode может мне помочь, я буду очень благодарен.
EDIT: Я сделал некоторые изменения, я изменил mysqli
, но теперь у меня есть другая ошибка: Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\www.c++.com\search-query.php on line 60
Тем не менее мой $query
является логическим типом
Сценария:
<?php
$i = 0;
$keywords = $_GET['keywords'];
$terms = explode(" ",$keywords);
$query = "SELECT * FROM search WHERE ";
foreach ($terms as $term){
$i++;
if ($i == 1)
$query .="keywords LIKE '%$term%' ";
else
$query .="OR keywords LIKE '%$term%' ";
}
//connect
$link = mysqli_connect("localhost", "root", "", "search");
$query = mysqli_query($link, $query);
$numrows = mysqli_num_rows($query);
if($numrows > 0){
while ($row = mysqli_fetch_assoc($query)){
$id = $row['id'];
$title = $row['title'];
$description = $row['description'];
$key = $row['keywords'];
$link = $row['link'];
}
echo "<h2><a href='$link'>$title</a></h2>
$descripton";
} else echo "No results found for \"<b>$keywords</b>\"";
//disconnect
mysqli_close($link);
?>
Это просто означает, что с вашим запросом что-то не так. Вам нужно каким-то образом увидеть ошибки mysql (с обработкой ошибок mysql, журналом ошибок или напечатать строку запроса $ и попробовать выход в консоли или phpmyadmin или так) – minychillo
эхо ваш запрос и посмотреть, если он выполняется правильно .....и я предлагаю переименовать результат с чем-то иначе, чем jus $ query –
Если я эхо '$ query' ничего не показывает –