У меня есть одна таблица 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, но не работает.
Вот скриншот базы данных

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






Эта часть неверна:
$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'] ));
Да, я тоже пробовал, но, к сожалению, не сработало.
Почему? Вы всегда должны стараться использовать правильный тип данных.
Я пробовал выполнить запрос с вкладкой SQL, он там работает. Я думаю, тип данных не проблема
Я не уверен, но я бы попытался изменить ваш запрос на:
("DELETE FROM `test` WHERE `date`= '".$tst_date."'");
Обратите внимание на дополнительные двойные кавычки вокруг $ tst_date
нет, это правильно. OP использует подготовленные операторы.
вы должны исправить свою форму:
<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. Но никакого эффекта.
Отправляется ли форма на страницу php?
да, я попытался повторить переменную $tst_date, и она дает дату как 08-06-2018
Эта дата никогда не будет сохранена в вашем дБ, если поле имеет тип даты. Формат - гггг-мм-дд, а не дд-мм-гггг, как сейчас.
@ Lelio Faieta поле date представляет собой простой тип varchar, а не date
ваша форма имеет недопустимый синтаксис. Т.е. у полей нет свойства метода. Проверьте html и посмотрите, регулярно ли форма публикуется на странице php.