Поиск MySQL с использованием PHP

Я пишу код для поиска MySQL, но он не работает

я использую класс PHP, и это код:

data_model.php

<?php
$data = new Data();
if (isset($_GET['q'])) {
    $data->$_GET['q']();
}
class Data {

    function __construct(){
        if (!isset($_SESSION['id'])){
            header('location:../../');   
        }
    }


    function getSubject($search){
        global $con;
        $q = "select * from subject where code like '%$search%' or title like '%$search%' order by code asc";
        $r = mysqli_query($con, $q);
        return $r;
    }]

тема.php

<?php
include "data/data_model.php";

$search = isset($_POST["search"]); 
$subject = $data->getSubject($search);
?>

<form action = "subject.php" method = "post">
   <label>
       <input type = "text" class = "form-control" name = "search" placeholder = "Search Subject..." >
   </label>
   <button type = "submit" name = "search" class = "btn btn-success" value = "search"><i class = "fa fa-search"></i> Search</button>
</form>

что-то не так в моем коде? Я также использую getSubject для получения данных из таблицы db в мою таблицу html, и у нее нет проблем, но при поиске она не работает?

Может кто-нибудь помочь мне? Заранее спасибо.

Вы получаете какую-либо ошибку? Кроме того, проверили ли вы, что в функции getSubject() переменная $search имеет значение ключевого слова поиска?

Shivani Sonagara 06.07.2019 06:37

вам нужно попробовать такой код: - 3v4l.org/rfAiq. Тем не менее код широко открыт для SQL-инъекций, поэтому лучше использовать подготовленный оператор

Anant Kumar Singh 06.07.2019 06:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
60
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Разве это не должно быть так?

$data = new Data();
if (isset($_GET['q'])) {
    $data->getSubject($_GET['q']);
}

Кроме того, это:

<?php
include "data/data_model.php";

$search = isset($_POST["search"]); 
$subject = $data->getSubject($search);
?>

Не будет работать, как ожидалось, потому что isset() возвращает TRUE/FALSE в зависимости от того, есть ли «поиск» в $_POST. Вот что работает:

    <?php
        include "data/data_model.php";


        $search = isset($_POST["search"]) ? $_POST["search"]:  '';
        $subject = $data->getSubject($search);
        ?>

Я думаю, что проблема в вашем объекте подключения. Поэтому он не работает должным образом, если вы хотите выполнять операции с использованием класса, тогда вот мой предлагаемый код для вас.

Сначала создайте класс подключения

class DBConnection {

        private $dbConnection = false;

        function __construct() {

        }

        public function connect() {
            $this->dbConnection = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
            if (mysqli_connect_error()) {
                die(error_db_not_conntected);
            }
            return $this->dbConnection;
        }

        public function disconnect() {
            $this->connect()->close();
        }
    }

Расширяет этот класс в классе данных.

вы должны включить файл DBConnection здесь

include 'DBConnection.php';

 class Data extends DBConnection{
       function __construct(){
            if (!isset($_SESSION['id'])){
                header('location:../../');   
            }
        }

        function getSubject($search){
            $q = "select * from subject where code like '%$search%' or title like '%$search%' order by code asc";
            $results = $this->connect()->query($q);
            $this->disconnect();
            return $results;
        }     
    }

Используйте этот класс так, если вы используете метод POST в вашем subject.php

$search = array();  
     if (isset($_POST['search'])){
        $search = (new Data())->getSubject($_POST['search']);
    }    
    print_r($search);   

Другие вопросы по теме