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

Я пытаюсь проверить ввод пользователя и запрос на удаление записи с таким же именем. Я использую phpStorm для кодирования

Я попытался просмотреть опечатку, формат кода и проверить запрос в phpAdmin, и он отлично работает.

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 3/24/2019
 * Time: 4:38 PM
 */

// Include config file
require_once "config.php";

$product_name= '';
$product_name_err = '';

// Processing form data when form is submitted
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
    if (empty(trim($_POST["product_name"]))){
        $product_name_err = "Please enter the product name.";
    } else{
        $product_name = trim($_POST["product_name"]);
    }

    //Delete the data in the product table
    $sql = "DELETE FROM `products` WHERE `name` = '$product_name'";
    if ($product_name_err =''){
        mysqli_query($link,$sql);
    }

}

?>
<?php include "header_admin.php"?>
<div class = "wrapper">
    <form action = "<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method = "post">
        <div class = "form-group" <?php echo (!empty($product_name_err)) ? 'has-error' : ''; ?>>
            <label>Product name</label>
            <input type = "text" name = "product_name" class = "form-control" >
            <span class = "help-block"><?php echo $product_name_err; ?></span>
        </div>

        <div class = "form-group">
            <input type = "submit" class = "btn btn-primary" value = "Delete Item">
        </div>
    </form>
</div>
<?php include "footer.php"?>

Я ожидаю, что предыдущий код проверит, является ли поле пустым, и запрос удалит соответствующую запись в базе данных, но любой из них, похоже, работает правильно. Кажется, $product_name вообще не получил никакого значения.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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
0
32
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Если ваше условие неверно, используйте '==' вместо '='.

if ($product_name_err ==''){
        mysqli_query($link,$sql);
 }

Замечательный ! Это действительно основная ошибка, которую я совершил. Я могу быть перегружен всеми php-файлами, которые у меня есть.... Я должен удалить этот пост, но я также хочу поблагодарить вас за просмотр моего кода.

BeAmazedVariable 09.04.2019 16:47

также вам действительно следует подумать об использовании подготовленных операторов для предотвращения атак SQL-инъекций, и это делает другие приятные вещи для вас, например, вам не нужно экранировать символы ' или " из ваших строк.

Дополнительная информация о подготовленных заявлениях

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

Приведенный ниже код должен работать правильно. В вашем сообщении была опечатка: if ($product_name_err =''){ должно быть if ($product_name_err ==''){

Кроме того, ваш код был уязвим для инъекций, что исправлено ниже с помощью функции mysqli_escape_string.

if ($_SERVER["REQUEST_METHOD"] == "POST") {

    $product_name = mysqli_escape_string($link, trim($_POST["product_name"]));

    if (empty($input)){
        $product_name_err = "Please enter the product name.";
    }

    //Delete the data in the product table
    $sql = "DELETE FROM `products` WHERE `name` = '$product_name'";

    if ($product_name_err == ''){
        mysqli_query($link,$sql);
    }

}

Спасибо, что нашли время и оценили мою ошибку. Какую глупую ошибку я там сделал. Хорошего дня, сэр.

BeAmazedVariable 09.04.2019 16:50

Нет проблем, отметьте это как решение и удачного дня! :)

Alex Mayo 09.04.2019 16:51

Проверка кода PHP поможет проверить ваш код PHP. Может быть, это поможет вам.

#Проверка кода PHP

Усовершенствованная, настраиваемая программа проверки кода PHP, которая ищет в вашем коде распространенные, трудно находимые опечатки и ошибки; включает проверку синтаксиса.

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