MuhammadNaamh Ответов: 1

Предупреждение: использование неопределенной константы search_query - предполагается 'search_query' (это вызовет ошибку в будущей версии PHP) в C:\xampp\htdocs\CMS\all_post.php на линии 721


Всем привет
Я пытаюсь сделать поисковую систему на своей странице поста, но это сообщение отображается на странице (
Предупреждение: использование неопределенной константы search_query - предполагается 'search_query' (это вызовет ошибку в будущей версии PHP) в C:\xampp\htdocs\CMS\All_post.php на строке 721) в echo "какой-то результат"; я пытаюсь что-то напечатать, но тоже не работаю

Что я уже пробовал:

 <?php
            
            
        if(isset($_POST['submit'])) {
            
        $search = $_POST['search'];
            
        $query = "SELECT * FROM posts WHERE post_title LIKE '%$search%' ";   
        $query_search = mysqli_query($connection,$query); 
        }
//        if(!query_search) {
//        die("QUERY FAILED" . mysqli_error($connection));
//        }
//            $count = mysqli_num_rows($query_search);
//            if($count == 0){
//            echo "<h1> no result</h1>";
//               
//            }else {
//                
//                echo "Some RESULT";
//            }
//            }   
           
        ?>

1 Ответов

Рейтинг:
10

Patrice T

Цитата:
Предупреждение: использование неопределенной константы search_query - предполагается 'search_query' (это вызовет ошибку в будущей версии PHP)

<?php


if(isset($_POST['submit'])) {

	$search = $_POST['search'];

	$query = "SELECT * FROM posts WHERE post_title LIKE '%$search%' ";
	$query_search = mysqli_query($connection,$query);
	// $query_search is defined inside a conditional structure
}
//  if(!query_search) { // thus it may not exist at this point
//      die("QUERY FAILED" . mysqli_error($connection));
//  }
//  $count = mysqli_num_rows($query_search);
//  if($count == 0){
//      echo "<h1> no result</h1>";
//  }else {
//      echo "Some RESULT";
//  }
//}

?>


$query = "SELECT * FROM posts WHERE post_title LIKE '%$search%' ";

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]


MuhammadNaamh

Спасибо....
Если я преобразую этот код в функцию, будет ли это та же проблема, что и с "SQL-инъекцией"?

Patrice T

Прочтите ссылки для получения объяснений и решения о SQL-инъекции