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

0

У меня есть один табличный test в котором я хочу удалить запись. Я использую запрос delete, но никакого эффекта. Я попытался запустить его на вкладке 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, но не работает. Здесь снимок экрана базы данных Изображение 174551

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

  • 0
    Ваша форма имеет неверный синтаксис. Т.е. у полей нет свойства метода. Проверьте html и посмотрите, регулярно ли форма публикуется на странице php.
  • 0
    @LelioFaieta Я пытался удалить атрибут метода из полей ввода, но это не имеет никакого эффекта. Это все еще не работает.
Теги:

3 ответа

1

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

$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 является столбцом DATE MySQL, вы должны использовать даты ISO8601 (первый год):

$tst_date= date('Y-m-d', strtotime( $_POST['tst_date'] ));
  • 0
    Да, я пытался с этим также, но, к сожалению, не работал.
  • 0
    нет, date - это простой столбец varchar
Показать ещё 2 комментария
0

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

<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. Затем используйте средство проверки браузера, чтобы проверить, правильно ли он отправлен

NB это работает вместе с @bart ответом

  • 0
    как ваше предложение, я попытался изменить код с типа input на тег button . Но никакого эффекта.
  • 0
    Публикуется ли форма на странице php?
Показать ещё 3 комментария
0

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

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

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

  • 0
    попробовал тоже, но не удача. Это не сработало.
  • 0
    нет, это правильно. ОП использует подготовленные заявления.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню