Почему бы просто не перенаправить на submessage.php
, а не вставить его? Перенаправление также предотвращает дублирование операций с БД при обновлении страницы пользователем. Просто замените include
заявление на:
header('Location: submessage.php?id=' . $pid);
die();
Кроме того, перед развертыванием приложения: НИКОГДА НЕ НАПРАВЛЯЙТЕ ПОЛЬЗОВАТЕЛЬСКИЙ ВХОД В SQL QUERY Вместо этого вы должны использовать связанные параметры. В противном случае, вы также можете публично объявить пароль администратора вашей базы данных. Читайте больше на PDO и подготовленных заявлениях в http://ie.php.net/pdo
Вот как бы я это сделал:
$pdo = new PDO(....); // some configuration parameters needed
$sql = "
UPDATE listing SET
catid=:catid, title=:title, summary=:summary,
content=:content, author=:author, keyword=:keyword
WHERE pid=:pid
";
$stmt = $pdo->prepare($sql);
$stmt->bindValue('catid', $_POST['catid']);
$stmt->bindValue('title', $_POST['title']);
$stmt->bindValue('summary', $_POST['summary']);
$stmt->bindValue('content', $_POST['content']);
$stmt->bindValue('author', $_POST['author']);
$stmt->bindValue('keyword', $_POST['keyword']);
$stmt->bindValue('pid', $pid = $_GET['id']);
$stmt->execute();
header('Location: submessage.php?id=' . $pid);
die();
Или, на самом деле, я бы использовал какое-то решение ORM, чтобы оно выглядело примерно так:
$listing = Listing::getById($pid = $_GET['id']);
$listing->populate($_POST);
$listing->save();
header('Location: submessage.php?id=' . $pid);
die();