我正在評論系統,我希望用戶能夠編輯它們。我已經制作了一個有效的發佈系統和一個可行的刪除系統。當我嘗試更新帖子,雖然它將我重定向到?edit_success url。但它只是不更新帖子。表格不更新帖子
將用戶帶到更新頁面的表單。
<form class='edit-form' method='POST' action='editmessage.php'>
<input type='hidden' name='cid' value='".$row['cid']."'>
<input type='hidden' name='uid' value='".$row['uid']."'>
<input type='hidden' name='date' value='".$row['date']."'>
<input type='hidden' name='content' value='".$row['content']."'>
<button>Edit</button>
</form>
提交表單後,它進入這個PHP文件
<?php include('header.php'); ?>
<body>
<div class="container">
<?php
$cid = $_POST['cid'];
$uid = $_POST['uid'];
$date = $_POST['date'];
$content = $_POST['content'];
echo "<form method='POST' action='includes/edit_post.inc.php'>
<input type='hidden' name='uid' value='".$_SESSION['username']."'>
<input type='hidden' name='date' value='".date(' Y-m-d ')."'>
<textarea class='ckeditor' name='content2'></textarea>
<br>
<button type='submit' class='btn btn-default' name='submit_vault_edit'>Edit</button>
</form>";
?>
</div>
<?php include('footer.php'); ?>
進入後這種形式是不言而喻的PHP腳本,更新後
<?php
include 'dbh.php';
if (isset($_POST['submit_vault_edit'])) {
$cid = $_POST['cid'];
$uid = $_POST['uid'];
$date = $_POST['date'];
$content = $_POST['content2'];
$sql = "UPDATE vaults SET content='$content' WHERE cid='$cid'";
$result = mysqli_query($conn, $sql);
header("Location: http://www.generationdiary.com/user_vault.php?editsuccess");
}
我所有的數據庫連接是正確的,一切都在這個意義上建立我只是覺得我在我的最後一位代碼有問題(代碼塊3)
你沒有從post方法傳入'$ cid'! – Saty
OMG !!!我怎麼錯過那個先生,謝謝你! – cosmichero2025
永遠不會信任來自用戶的數據 - >您應該真的**考慮使用[PPS:Prepared Parameterized Statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)。這將有助於[阻止SQL注入](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)。它也有助於使用'error_reporting(E_ALL); ini_set('display_errors',1);'在你的頁面之上,讓PHP警告你。正如@Saty所說的那樣,好像你錯過了$ var – OldPadawan