У меня есть форма редактирования для обновления песни, но вместо этого она перенаправляется на show_profile.php без обновления записи в базе данных.PHP и MySQLi: функция обновления не работает
Мои другие функции, такие как show, delete работают правильно.
мой edit_song.php:
$userID = ProfileDB::getInstance()->get_user_id_by_email($_SESSION['email']);
$songID = $_GET['songID'];
$song = mysqli_fetch_array(ProfileDB::getInstance()->get_song_by_song_id($songID));
if ($_SERVER['REQUEST_METHOD'] == "POST"){
$artist = filter_var($_POST['artist'], FILTER_SANITIZE_STRING);
$songTitle = filter_var($_POST['song'], FILTER_SANITIZE_STRING);
if ($artistIsValid && $songIsValid) {
ProfileDB::getInstance()->update_song($_POST['songID'], $_POST['artist'], $_POST['song']);
header('Location: show_profile.php');
exit;
}
}
<form method="POST" id="editSong">
<input type="hidden" name="songID" value="<?php echo $songID; ?>" />
<label>Artist:</label>
<input type="text" name="artist" value="<?php echo $currentSong['artist']; ?>" /><br/>
<label>Song Title</label>
<input type="text" name="song" value="<?php echo $currentSong['song']; ?>" /><br/>
<br />
<input type="submit" value="Edit Song"/>
</form>
в моем классе ProfileDB:
public function update_song($songID, $artist, $song) {
$artist = $this->real_escape_string($artist);
$song = $this->real_escape_string($song);
$this->query("UPDATE song SET artist = '" . $artist .
"', song = '" . $song . "' WHERE id = '" . $songID . "'");
}
Что мне не хватает, и как это исправить? Я активировал error_reporting (E_ALL); на всех страницах, но он перенаправляет на show_profile.php без каких-либо ошибок или предупреждений.
дамп некоторые отладки после того, как если заявление, и закомментируйте редирект, чтобы убедиться, что он делает то, что предназначено , 'Print_r ($ _ POST); exit; 'должен убедиться, что вы правильно добрались до этой функции. – FrankerZ
** Попробуйте это ** '$ this-> mysqli_query ($ conn," UPDATE song SET artist = '". $ Artist. "', song = '". $ Song."' WHERE id = '" $ songID. "'"); ' –
@FrankerZ: после того, как я вставил ваш код отладки, он печатает: Array ([songID] => 14 [artist] => Annie Lennox [song] => sdfgsfdgtest), который выглядит хорошо. – StandardNerd