我一直在这个网站上寻找解决方案3天,我只是觉得我太傻了:/ 我正在用PHP构建一个非常简单的CMS。它可以提交/删除/显示帖子。我现在正在编辑编辑功能,但它不起作用。我正在使用准备好的陈述。数据库连接正常。这是我编辑功能的代码:
if(isset($_GET['actie']) && $_GET['actie'] == "edit"){
//This should show the form with the current values of the post which you are editing
$query= 'SELECT * FROM posts WHERE ID=?';
$statement = $link->prepare($query);
$statement->bind_param('i', $ID);
$statement->execute();
$statement->fetch();
$statement->close();
echo ' <h1>Edit message</h1>
//Here is where the undefined variables come in
<form method="POST" name="input" action="" type="text/plain"/>
<iput type="hidden" name="ID" id="ID" value="'.$ID.'" />
<label for="title">Titel</label>
<input type="text" name="title" id="title" placeholder="Titel" value="'.$title.'" required />
<label for="author">Naam</label>
<input type="text" name="author" id="author" placeholder="Naam" value="'.$author.'"required />
<label for="content">Inhoud</label>
<textarea name="content" id="content" cols="40" rows="5" placeholder="Je tekst">'.$content.'</textarea>
<label for="submit"></label>
<input type="submit" name="submit" id="submit" value="Submit edit"/>
</form>';
}
if(isset($_POST['submit']) && $_POST['submit'] == "Submit edit"){
//This should do the update
$statement = $link->prepare("UPDATE posts SET title=?, author=?, content=? WHERE ID=?");
$statement->bind_param('sssi', $title, $author, $content, $ID);
$statement->execute();
$statement->close();
}
在我遇到很多错误的时候,这是当前的错误:
Undefined variable (ID, title, author, and content)
我确实有一段代码,但就是这样(使用$ _GET变量代替占位符):
$statement = $link->prepare("UPDATE posts SET title = '".$_POST['title']."', author = '".$_POST['author']."', content = '".$_POST['content']."' WHERE ID=".$_GET['ID']."");
我认为sql注入不安全?删除/提交/显示帖子功能的代码更多,但我认为这不相关。我的问题是:导致这些错误的原因是什么?我希望你们能帮助我。我希望我的问题很明确。
先谢谢你!