Galarist_00 Ответов: 2

Как отменить отправку после того, как значение было отправлено в базу данных с помощью ajax?


Я собираюсь привести в исполнение, как и в отличие от системы для моего проекта. Я последовал за ним этот учебник чтобы все работало. Я пытаюсь сделать функцию отмены like/dislike, если я снова нажму на ту же кнопку, но я не могу понять, что я должен изменить или добавить в коды.

Что я уже пробовал:

Я попытался проверить, существует ли запись в базе данных, а затем, если да, удалить ее, но ничего не происходит:


$query = "SELECT * FROM like_unlike WHERE type='1' and userid = '$userid' and postid='$postid'";
$result = mysqli_query($conn,$query);
$fetchliked = mysqli_fetch_array($result);
$liked = $fetchliked['type'];
if ($liked == '1') {
    $deletequery = "DELETE FROM like_unlike WHERE type='1' userid='$userid' and postid='$postid'";
    mysqli_query($conn,$deletequery);
}

Richard Deeming

Ваш код почти наверняка уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк (или интерполяция) чтобы построить SQL-запрос. ВСЕГДА используйте параметризованный запрос.

PHP: SQL-инъекция - руководство пользователя[^]
РНР: Подготовленные инструкции и хранимые процедуры - руководство пользователя[^]

2 Ответов

Рейтинг:
2

Richard Deeming

Цитата:
$deletequery = "DELETE FROM like_unlike WHERE type='1' where userid='$userid' and postid='$postid'";

У тебя их два WHERE п. в DELETE заявление. Если это не MySql-special, у вас должен быть только один:
$deletequery = "DELETE FROM like_unlike WHERE type='1' and userid='$userid' and postid='$postid'";

Но вам действительно нужно исправить ситуацию. SQL-инъекция[^] факторы уязвимости. :)


Galarist_00

Да, я это понял. Даже если я это исправил. Это все еще не работает...

Galarist_00

Наверное, мне тоже нужно что-то изменить в Аяксе

Рейтинг:
1

Gerry Schmitz

Вы по-разному интерпретируете "postid" в предложениях SELECT и DELETE "where"; литерал в одном случае (DELETE) и что-то еще в другом.


Galarist_00

да, это я исправил. Все еще не работает...

Gerry Schmitz

Не видел вашего "исправления" или того, что на самом деле требовалось.

Galarist_00

Что ты имеешь в виду? Я исправил эту синтаксическую ошибку в запросе delete, но все еще не отменяю like или unlike, если я снова нажму на ту же кнопку submitted.