Как записать редирект в функции insert?

0

Здравствуйте, вопрос о поведении 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();
}

СПАСИБО!

php
mysql

8 ответов

0

В location не нужно писать эти строки:

http://kinomonster.com/player.php

только эта запись должна быть:

 header("Location: " . $_SERVER['REQUEST_URI']);

Потому что $_SERVER['REQUEST_URI'] - это текущая страница.

0
$mysqli->query($query);

if($mysqli->query($query)) { // Если выполнился query

Первый $mysqli->query($query); не нужен, он же ниже выполняется в блоке if.

0

спасибо за ответ! Изменил код, сейчас он так выглядит:

$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

Вероятно допущена синтаксическая ошибка. Коментирую редирект - ошибка исчезает! Проблема в нем. Не могу понять только где! Подскажите, советом,  пожалуйста.

СПАСИБО!

0

спасибо, за уточнение! приму ко вниманию! 

0

Получился такой у меня вот конечный код, правда уже в другой базе пробую его запустить:

$query = "INSERT INTO movie VALUES(null, 'mmm', 'gggggg', '2019', Now())";
if($mysqli->query($query)) {
header("Location: " . $_SERVER['REQUEST_URI']);
exit();
}

обновляю браузер - страница не найдена, сообщения о необходимости удалить куки. Удалил, та же ситуация. Захожу в БД, обновляю таблицу - в ней новая запись и 20 дубликатов! Удаляю последний дубликат, обновляю таблицу - появился новый дубликат со следующим id. Насколько элементарная вещь, а сколько трудностей! Почему ведет себя так указанный код! 

СПАСИБО.

0

закоментировал "злокод" $query = "INSERT INTO movie VALUES(null, 'mmm', 'gggggg', '2019', Now())";
if($mysqli->query($query)) {
header("Location: " . $_SERVER['REQUEST_URI']);
exit();

обновил браузер, а там - шт 70 дубликатов добавленной строки!

0

в myadmin при удалении появлялась запись со следующим id по причине, что на странице таблицы указано было отображать 25 строк.

Что не так с указанным кодом? Возможно недостает настройки БД? Хотя вряд ли! 

0

Всем спасибо, вопрос снят! Редирект вообще не нужен в моем случае! Сколько всего перечитал, и никто не написал - "добавил значение в базу, удали или закоментируй скрипт, это оптимальный способ". А поиграться можно с проверкой на уникальность! Редирект же полезен будет при обработке фомы! 

Sign up or Log in to write an answer