Молодец, что используешь подготовленные выражения, но очень плохо, что не до конца. Подготовленные выражения должны использоваться для ВСЕХ запросов, в которых участвуют переменные.
Плюс использовать в запросе
массив $row не имеет ни малейшего смысла.
Также я не уверен что word следует привязывать с типом i а не s
Ну и разумеется все это делается одним запросом.
if (isset($_POST['word'], $_POST['vocabulary'])){
$word = $_POST['word'];
$vocabulary = $_POST['vocabulary'];
$query = "DELETE FROM `words` WHERE `word` =? and `vocabulary` = ?";
$stmt = $connection->prepare($query);
$stmt->bind_param("ss", $word, $vocabulary);
$stmt->execute();
if($stmt->affected_rows){
$_SESSION['smsq'] = "Слово удалено!";
} else {
$_SESSION['fsmsq'] = "Ошибка!";
}
}
header('Location: ../edit-voc.php');
Отдельно замечу что
никогда не надо писать or die("Ошибка: ".mysqli_error($connection));
ю Вместо этого в файле с коннектом надо один раз написать
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
и тогда РНР обо всех ошибках запросов будет сообщать самостоятельно