【问题标题】:Updating data into MySql database using PHP Form使用 PHP 表单将数据更新到 MySql 数据库中
【发布时间】:2013-10-08 20:18:12
【问题描述】:

我希望有人可以帮助我。我正在尝试使用带有 textarea 的 PHP 表单将数据更新到 MySql 数据库中。 只要我使用在页面开头定义的随机字符串更新数据库,它就可以正常工作。但是当我尝试使用从表单收到的 $_POST['text'] 更新数据库时,数据库中的值不会更新。

我真的不知道问题是什么,所以我希望有人可以帮助我完成这项工作。如果我的问题不够清楚,请告诉我。

test.php

<html>
<head>
  <script type="text/javascript" src="./js/tinymce/tinymce.min.js"></script>
  <script type="text/javascript">
    tinymce.init({
      selector: "textarea",
      plugins : 'advlist autolink autoresize autosave link image lists charmap media paste preview spellchecker',
      image_advtab: true
    });
  </script>
</head> 

<body>
  <?php
    $con=mysqli_connect("example.com","test","abc123","my_db");
    // Check connection
    if (mysqli_connect_errno())
    {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }                                  

    $result = mysqli_query($con,"SELECT content FROM page_content WHERE page = 'Zangpedagoog'");

    while($row = mysqli_fetch_array($result))
    {
      $text=$row['content'] ;
    }    
  ?>

  <form method="post" action="./send.php">
    <textarea name="text" width="100%">
    <?php echo $text ?>
    </textarea>
    <input id="submit" name="submit" type="submit" value="Send"></form></body></html>

发送.php

<?php
  $update = $_POST['text'];
  echo $update;

  $random = '123456';
  echo $random;

  $con=mysql_connect("example.com","test","abc123","my_db");
  // Check connection
  if (!$con)
  {
    echo "Failed to connect to MySQL: " . mysql_connect_error();
  }

  mysql_query("UPDATE page_content SET content=$update WHERE page='Zangpedagoog'",$con);

  mysql_close($con);

?> 

【问题讨论】:

  • 首先你使用mysqli_query 然后你使用mysql_query 尝试坚持使用“one”,mysqli_ 更好,原因有很多。
  • mysql_* 已弃用,请改用 mysqli 或 pdo。您还需要查看准备好的语句,您的代码很容易受到 SQL 注入攻击
  • 尝试在您的 textarea 中添加一个分号以回显 PHP,如 &lt;?php echo $text; ?&gt;&lt;?php echo $_POST['$text']; ?&gt;

标签: php mysql database forms sql-update


【解决方案1】:

我猜它在这里:

mysql_query("UPDATE page_content SET content=$update WHERE page='Zangpedagoog'",$con);

您将 $update 直接放在字符串中。 这是非常危险和愚蠢的,但这不是你来的目的。 我猜,真正导致错误的原因是 $update 周围缺少 '。 现在值 get 直接放入查询中,而不是作为字符串,我认为你想要的。 请记住,这对于 SQL 注入是非常开放的! 固定代码:

mysql_query("UPDATE page_content SET content='$update' WHERE page='Zangpedagoog'",$con);

【讨论】:

  • 感谢您的回答,它有效!而且我知道它对 SQL 注入开放,我只是在尝试一些东西,但谢谢你提醒我!
猜你喜欢
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-10
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
  • 2012-10-09
相关资源
最近更新 更多