Данные в таблице не затронуты запросом DELETE в базе данных MySQL с использованием php

У меня есть одна таблица test, в которой я хочу удалить запись. Я использую запрос на удаление, но безрезультатно. Я пробовал запустить его на вкладке SQL в phpmyadmin, и он там работает. Но в коде php это не работает. Вот код HTML

<form action = "home.php" method = "post">
  <button class = "button button3" type = "button" onclick = "return 
  toggleMe('del_tst')">Delete Test</button><br>
  <div id = "del_tst" style = "display:none">
  <input type = "date" class = "textstyle" name = "tst_date" method = "post" 
  placeholder = "Enter test date" />
  <button type = "submit" class = "subbutton button1" value = "Delete" 
  method = "post" 
  name = "del_tst">Delete</button><br/>
  </div>
</form>

и вот PHP-код

if (isset($_POST['del_tst'])){
 $tst_date= date('d-m-Y', strtotime( $_POST['tst_date'] ));

try{
    $stmt_tst=$conn->prepare("DELETE FROM `test` WHERE `date`=:tst_date"); 

    $stmt_tst->bindparam(":tst_date",$tst_date);
    $result=$stmt->execute();
    if ($result===TRUE)
    {
        if (($stmt->rowCount())>0)
        {
            echo "<font color='white'> <i>record Deleted successfully!</i></font>";
        }
        else{
          echo "<font color='white'> <i>No such record exists!</i></font>";
        }
    }
    else{
        echo "Something Went Wrong!";
    }

    return true; 
}
catch(PDOException $e)
{
 echo $e->getMessage(); 
 return false;
}
}

Я пытаюсь удалить запись с помощью date в состоянии WHERE, но не работает. Вот скриншот базы данных Данные в таблице не затронуты запросом DELETE в базе данных MySQL с использованием php

Будьте со мной, чтобы решить эту проблему.

ваша форма имеет недопустимый синтаксис. Т.е. у полей нет свойства метода. Проверьте html и посмотрите, регулярно ли форма публикуется на странице php.

Lelio Faieta 04.07.2018 17:08

@LelioFaieta Я попытался удалить атрибут метода из полей ввода, но это не помогло. Это все еще не работает.

user8838403 04.07.2018 17:12
Стоит ли изучать 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
55
3

Ответы 3

Эта часть неверна:

$stmt_tst=$conn->prepare("DELETE FROM `test` WHERE `date`='.$tst_date.'");
$stmt_tst->bindparam(":tst_date",$tst_date);
$result=$stmt->execute();

вы должны изменить это так:

$stmt_tst=$conn->prepare("DELETE FROM `test` WHERE `date`=:tst_date");
$stmt_tst->bindparam(":tst_date",$tst_date);
$result=$stmt->execute();

См. Больше в документация.

Кроме того, если date является столбцом MySQL DATE, вы должны использовать даты ISO8601 (сначала год):

$tst_date= date('Y-m-d', strtotime( $_POST['tst_date'] ));

Да, я тоже пробовал, но, к сожалению, не сработало.

user8838403 04.07.2018 17:04

Почему? Вы всегда должны стараться использовать правильный тип данных.

Bart Friederichs 04.07.2018 17:10

Я пробовал выполнить запрос с вкладкой SQL, он там работает. Я думаю, тип данных не проблема

user8838403 04.07.2018 17:15

Я не уверен, но я бы попытался изменить ваш запрос на:

("DELETE FROM `test` WHERE `date`= '".$tst_date."'");

Обратите внимание на дополнительные двойные кавычки вокруг $ tst_date

нет, это правильно. OP использует подготовленные операторы.

Lelio Faieta 04.07.2018 17:09

вы должны исправить свою форму:

<form name = "myForm" action = "home.php" method = "post">
  <input type = "date" class = "textstyle" name = "tst_date" placeholder = "Enter test date" />
  <input type = "submit" class = "subbutton button1" value = "Delete" name = "del_tst">Delete</button><br/>
  </form>

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

N.B. это работает вместе с ответом @bart

в качестве вашего предложения я попытался изменить код с типа input на тег button. Но никакого эффекта.

user8838403 04.07.2018 17:24

Отправляется ли форма на страницу php?

Lelio Faieta 04.07.2018 17:25

да, я попытался повторить переменную $tst_date, и она дает дату как 08-06-2018

user8838403 04.07.2018 17:28

Эта дата никогда не будет сохранена в вашем дБ, если поле имеет тип даты. Формат - гггг-мм-дд, а не дд-мм-гггг, как сейчас.

Lelio Faieta 04.07.2018 17:30

@ Lelio Faieta поле date представляет собой простой тип varchar, а не date

user8838403 04.07.2018 17:31

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