Штриховое кодирование для нескольких ключевых слов, когда соответствует только 1

Так что я просмотрел интернет и фактически зарегистрировался на этом сайте, так как я обнаружил, что большинство моих поисков в Google приводят меня сюда. Я почти сделал свой веб-сайт, и я использовал шаблон, который я расширил. На нем есть панель поиска, которая не работает. У меня это работает в основном. проблема, с которой я сталкиваюсь, заключается в том, что когда я вставляю ключевое слово, которое есть в MySQL, оно работает нормально, когда я вставляю одиночное ключевое слово, которое, как я знаю, не существует, оно не дает правильного результата. Теперь моя проблема, когда вы смешиваете 2 ошибки в базе данных. Вот мой PHP-код, который я собрал до сих пор …

    <?php
$db = mysqli_connect('host','username','password')
or die('Error connecting to MySQL server.');
$keyword = $_GET['keyword'];
$terms = explode(" ", $keyword);

$query = "SELECT * FROM searchresults WHERE ";

foreach ($terms as $each) {

$i=0;
if ($i == 0)
$query .= "pagebody LIKE  '%$each%' ";
else
$query .= " OR pagebody LIKE  '%$each%' ";

}

mysqli_query($db, $query) or die('Error querying database.');

$result = mysqli_query($db, $query);
$row = mysqli_fetch_array($result);if ($row > 0) {

while ($row = mysqli_fetch_array($result)) {
$id = $row['id'];
$title = $row['title'];
$description = $row['description'];
$pagebody = $row['pagebody'];
$link = $row['link'];echo "<h2><a href='$link'>$title</a></h2></br>
$description<br/><br/>";
}
}   else
echo "No results found for.\"<b>$keyword</b>\"";
?>

Любая помощь приветствуется. Мне нужно выяснить, как сделать так, чтобы, если какое-либо из ключевых слов не было распознано, оно не выдало ошибку.

1

Решение

Это не решит проблемы, которые вы избегаете при вводе пользователем, но ответит на ваш вопрос при устранении ошибки поиска; Ваш исходный код сохраняет $ i равным 0 на каждой итерации цикла foreach, поэтому запрос выглядит так:

SELECT * FROM searchresults WHERE pagebody LIKE '%$each%' pagebody LIKE '%$each%' pagebody LIKE '%$each%'

Вам нужно изменить следующие строки:

$query = "SELECT * FROM searchresults WHERE ";

foreach ($terms as $each) {

$i=0;
if ($i == 0)
$query .= "pagebody LIKE  '%$each%' ";
else
$query .= " OR pagebody LIKE  '%$each%' ";

}

изменить это на:

$i=0;
$query = "SELECT * FROM searchresults WHERE";

foreach ($terms as $each) {
if($i == 0){
$query .= " pagebody LIKE '%$each%'";
}else{
$query .= " OR pagebody LIKE  '%$each%'";
}
$i++;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]