Форма не собирает вводимые пользователем данные, и запрос не работает должным образом, хотя я ввел правильную таблицу и столбец - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь проверить ввод пользователя и запрос на удаление записи с таким же именем. Я использую 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 вообще не получает никакого значения.

Ответы [ 4 ]

0 голосов
/ 09 апреля 2019

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

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

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

enter image description here

0 голосов
/ 09 апреля 2019

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

Подробнее о подготовленных выписках

0 голосов
/ 09 апреля 2019

Код ниже должен работать правильно. В вашем признании была опечатка: 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);
    }

}
0 голосов
/ 09 апреля 2019

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

if ($product_name_err ==''){
        mysqli_query($link,$sql);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...