Я пытаюсь проверить ввод пользователя и запрос на удаление записи с таким же именем. Я использую 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 вообще не получил никакого значения.
Если ваше условие неверно, используйте '==' вместо '='.
if ($product_name_err ==''){
mysqli_query($link,$sql);
}
также вам действительно следует подумать об использовании подготовленных операторов для предотвращения атак 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);
}
}
Спасибо, что нашли время и оценили мою ошибку. Какую глупую ошибку я там сделал. Хорошего дня, сэр.
Нет проблем, отметьте это как решение и удачного дня! :)
Проверка кода PHP поможет проверить ваш код PHP. Может быть, это поможет вам.
Усовершенствованная, настраиваемая программа проверки кода PHP, которая ищет в вашем коде распространенные, трудно находимые опечатки и ошибки; включает проверку синтаксиса.
Замечательный ! Это действительно основная ошибка, которую я совершил. Я могу быть перегружен всеми php-файлами, которые у меня есть.... Я должен удалить этот пост, но я также хочу поблагодарить вас за просмотр моего кода.