Как исправить php-запрос в строке поиска веб-приложения и отобразить результаты - PullRequest
0 голосов
/ 31 января 2019

У меня есть окно поиска на панели навигации моего веб-приложения, которое появляется на каждой веб-странице.У меня есть запрос, который должен извлекать результаты из моей базы данных на основе текста, который пользователь вводит в поле поиска, но на данный момент он не показывает никаких результатов.

Мое веб-приложение, по сути, публикует егодоска для событий, поэтому я хочу, чтобы пользователь мог искать событие, а затем отображать это событие в таблице или переносить его на страницу самого события, в зависимости от того, что проще.Я использую Netbeans в качестве своей IDE, и моя база данных - MariaDB в XAMPP.Мое веб-приложение пока только локально размещено.В настоящее время у меня есть запрос, который должен искать в базе данных, но я думаю, что результат запроса или результат неверен.Я не очень хорош в PHP, но мне нужно делать это так, как это делается на каждой странице веб-приложения.

Код строки поиска на каждой странице:

<form action="search.php" method="post">
   <input type="text" name="search" placeholder="Search for an event..">
    <input type="submit" value="Search">
</form>

Тогда файл search.php выглядит так:

<?php


$search = filter_input(INPUT_POST, 'search');
$companyname = filter_input(INPUT_POST, 'companyname');
$eventname = filter_input(INPUT_POST, 'eventname');
$servername = "localhost"; 
$username = "root";
$password = "";
$dbname = "fyp";

$conn = new mysqli($servername, $username, $password, $dbname);


if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

echo "Connected successfully";
$sql = "SELECT eventname FROM event WHERE eventname LIKE '%$search%'";


if ($conn->query($sql) === TRUE) {
    echo "Result Found";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

На данный момент это простопоявляется сообщение «Connected успешноError: ВЫБЕРИТЕ имя события ОТ события, ГДЕ имя события LIKE '% Golf%'".У меня есть событие под названием «SHARE Golf Classic» в базе данных, поэтому я сейчас тестирую это.Я хотел бы перейти на страницу с именем Event.php и отобразить результаты либо в таблице, либо заполнить метки или текстовые поля сведениями о событии.Таблица событий состоит из события, названного события, имени события, типа события, charityid, контактных данных, местоположения и даты.

1 Ответ

0 голосов
/ 31 января 2019

Определение ошибок объектов (Mysqli) может быть затруднено, поэтому вместо него следует использовать try-catch подход.Ваш код может выглядеть следующим образом:

<?php

$search = filter_input(INPUT_POST, 'search');
$companyname = filter_input(INPUT_POST, 'companyname');
$eventname = filter_input(INPUT_POST, 'eventname');
$servername = "localhost"; 
$username = "root";
$password = "";
$dbname = "fyp";

try {
    $conn = new mysqli($servername, $username, $password, $dbname);
    $sql = "SELECT eventname FROM event WHERE eventname LIKE '%$search%'";
    if (($result = $conn->query($sql)) === true) {
        var_dump($result)
    }
} catch (mysqli_sql_exception $e) {
    var_dump($e)
} finally {
    $conn->close();
}

Имейте в виду, что использование параметров из запроса POST в таком запросе может быть опасным.Я бы предложил поискать другой клиент MySQL для PHP ( PDO ) и использовать вместо него подготовленные операторы .

В приведенном выше примере кода также используется finally, чтобыл добавлен в PHP 5.5, убедитесь, что ваша версия это или выше (в настоящее время поддерживаются версии PHP 7.2 и 7.3 - вы всегда должны быть в курсе).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...