Как записать редирект в функции insert?
Здравствуйте, вопрос о поведении INSERT уже обсуждался здесь (https://fructcode.com/ru/qa/pochemu-pri-kajdom-obnovlenii-tablisi/) - дублирование данных в БД при каждом обновлении. Не могу никак применить в своем случае предложенный способ.
Подскажите, пожалуйста, где допущена ошибка?
$query = "INSERT into songs values(null, 'Home', 'Armand Amar')";
$mysqli->query($query);
if($mysqli->query($query)) { // Если выполнился query
// Здесь редирект
header("Location: http://kinomonster.com/player.php" . $_SERVER['REQUEST_URI']);
exit();
}
СПАСИБО!
8 ответов
В location не нужно писать эти строки:
http://kinomonster.com/player.php
только эта запись должна быть:
header("Location: " . $_SERVER['REQUEST_URI']);
Потому что $_SERVER['REQUEST_URI'] - это текущая страница.
$mysqli->query($query);
if($mysqli->query($query)) { // Если выполнился query
Первый $mysqli->query($query); не нужен, он же ниже выполняется в блоке if.
спасибо за ответ! Изменил код, сейчас он так выглядит:
$query = $mysqli->query('SELECT * FROM songs');
while ($row = mysqli_fetch_assoc($query)) {
echo $row['name']." - ".$row['author'];
}
$mysqli->close();
$query = "INSERT into songs values(null, 'Home', 'Armand Amar')";
$mysqli->query($query);
if($mysqli->query($query)) { // Если выполнился query
// Здесь редирект
header("Location: " . $_SERVER['REQUEST_URI']);
exit();
}
в браузере выводиться ошибка
Warning: mysqli::query(): Couldn't fetch mysqli in C:\xampp\htdocs\kinomonster\player.php on line 12
Warning: mysqli::query(): Couldn't fetch mysqli in C:\xampp\htdocs\kinomonster\player.php on line 14
Вероятно допущена синтаксическая ошибка. Коментирую редирект - ошибка исчезает! Проблема в нем. Не могу понять только где! Подскажите, советом, пожалуйста.
СПАСИБО!
спасибо, за уточнение! приму ко вниманию!
Получился такой у меня вот конечный код, правда уже в другой базе пробую его запустить:
$query = "INSERT INTO movie VALUES(null, 'mmm', 'gggggg', '2019', Now())";
if($mysqli->query($query)) {
header("Location: " . $_SERVER['REQUEST_URI']);
exit();
}
обновляю браузер - страница не найдена, сообщения о необходимости удалить куки. Удалил, та же ситуация. Захожу в БД, обновляю таблицу - в ней новая запись и 20 дубликатов! Удаляю последний дубликат, обновляю таблицу - появился новый дубликат со следующим id. Насколько элементарная вещь, а сколько трудностей! Почему ведет себя так указанный код!
СПАСИБО.
закоментировал "злокод" $query = "INSERT INTO movie VALUES(null, 'mmm', 'gggggg', '2019', Now())";
if($mysqli->query($query)) {
header("Location: " . $_SERVER['REQUEST_URI']);
exit();
обновил браузер, а там - шт 70 дубликатов добавленной строки!
в myadmin при удалении появлялась запись со следующим id по причине, что на странице таблицы указано было отображать 25 строк.
Что не так с указанным кодом? Возможно недостает настройки БД? Хотя вряд ли!
Всем спасибо, вопрос снят! Редирект вообще не нужен в моем случае! Сколько всего перечитал, и никто не написал - "добавил значение в базу, удали или закоментируй скрипт, это оптимальный способ". А поиграться можно с проверкой на уникальность! Редирект же полезен будет при обработке фомы!