PHP:为更新查询准备的语句不起作用

时间:2014-01-24 16:45:32

标签: php mysqli prepared-statement

我一直在这个网站上寻找解决方案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注入不安全?删除/提交/显示帖子功能的代码更多,但我认为这不相关。我的问题是:导致这些错误的原因是什么?我希望你们能帮助我。我希望我的问题很明确。

先谢谢你!

0 个答案:

没有答案