抓取在textarea中输入的值,从MySQL(PDO)更新列

时间:2018-01-29 15:49:17

标签: php pdo

我已经在所有问题上搜索了我怎么做,但我仍然无法获得我的价值。

我要做的是:管理员将一些文本放入textarea(以POST格式),管理员点击“发送”按钮,然后替换数据库中的值。

我正在使用PDO进行连接。

这是我的代码:

<div class="container">
  <div class="row">
    <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12" style="text-align: center; margin-top: 70px;">
      <form method="post" action="../index.php">
        <textarea style="width: 100%; height: 100px;" name="whatupdate"></textarea><br><br>

        <input type="submit" class="btn btn-outline-danger" name="subsub">
<?php
  require '../database.php';
          $db = Database::connect();
          $what = $_POST['whatupdate'];
          $statement = $db->prepare("UPDATE updator SET marquee = '$what' 
          WHERE updator.id=0;");
          $statement->execute();
?>
      </form>
    </div>
  </div>
</div>

问题是,我无法转储在我的textarea中输入的值,因此数据库中的新值无效:

http://prntscr.com/i781un

但如果我这样写:

$statement = $db->prepare("UPDATE updator SET marquee = 'ANYKINDOFTEXT' 
              WHERE updator.id=0;");

它正确地替换了列值......

感谢您阅读并提供答案!

2 个答案:

答案 0 :(得分:0)

您需要检查是否设置了要发布的变量。尝试使用此代码:

<?php
      require '../database.php';
      if(isset($_POST['subsub'])):
              $db = Database::connect();
              $what = $_POST['whatupdate'];
              $statement = $db->prepare("UPDATE updator SET marquee = :what 
              WHERE updator.id=0;");
              $statement->execute([':what' => $what]);
    endif;
    ?>
<div class="container">
  <div class="row">
    <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12" style="text-align: center; margin-top: 70px;">
      <form method="post" action="">
        <textarea style="width: 100%; height: 100px;" name="whatupdate"></textarea><br><br>

        <input type="submit" class="btn btn-outline-danger" name="subsub">

      </form>
    </div>
  </div>
</div>

答案 1 :(得分:0)

问题是,您要将代码重新提交到同一页面。将您的PHP代码放在顶部并将其包装在if()中,以便它可以检查$_POST['subsub'],如果存在,则执行其余代码。

此外,在您的表单中,为了清楚起见,请将操作更改为action=''