当前位置: 首页 > 知识库问答 >
问题:

规范:如何将HTML表单数据保存到MySQL数据库中

庾鸿飞
2023-03-14

这是使用PHP将数据从(HTML)表单保存到MySQL数据库的规范问答。

如果您正在尝试执行以下操作,则此操作适用于您:

  1. 接受HTML表单上的用户输入
  2. 使用PHP脚本处理输入
  3. 将所述输入存储到MySQL数据库中。

过去提出的不应使用的类似问题的例子:

连接PHP代码并将表单提交到mySQL数据库
使用PHP/html表单插入mySQL-不工作
如何使用PHP将html表单数据传递到mySQL db并将数据返回到浏览器
将表单数据保存到数据库

简而言之,如果您的问题是:我想使用HTML表单、PHP和MySQL或类似的方式将用户输入存储到数据库,请继续阅读。

共有1个答案

宁侯林
2023-03-14

首先,您的PHP或HTML页面应该生成一个用户可以与之交互的表单。最简单的形式是:

<html>
<body>
 <form method="post" action="yourscript.php">
  <input type="text" name="yourfield">
  <input type="submit" name="youraction" value="save">
 </form>
</body>
</html>

这将给你的用户一个简单的单输入字段和‘保存’按钮的表单。单击“保存”按钮后,内容将使用post方法发送到您的“yourscript.php”。

yourscript.php应实现以下内容:

  1. 接受并处理来自表单的输入。
  2. 连接到您的MySQL数据库。
  3. 存储到数据库中。

最简单的形式是:

<!doctype html>
<html>
 <head>
  <title>Process and store</title>
 </head>
<body>
<?php

// Check that user sent some data to begin with. 
if (isset($_REQUEST['yourfield'])) {

    /* Sanitize input. Trust *nothing* sent by the client.
     * When possible use whitelisting, only allow characters that you know
     * are needed. If username must contain only alphanumeric characters,
     * without puntation, then you should not accept anything else.
     * For more details, see: https://stackoverflow.com/a/10094315
     */
    $yourfield=preg_replace('/[^a-zA-Z0-9\ ]/','',$_REQUEST['yourfield']);

    /* Escape your input: use htmlspecialchars to avoid most obvious XSS attacks.
     * Note: Your application may still be vulnerable to XSS if you use $yourfield
     *       in an attribute without proper quoting.
     * For more details, see: https://stackoverflow.com/a/130323
     */
    $yourfield=htmlspecialchars($yourfield);


} else {
    die('User did not send any data to be saved!');
}


// Define MySQL connection and credentials
$pdo_dsn='mysql:dbname=yourdatabase;host=databasehost.example.com';
$pdo_user='yourdatabaseuser';     
$pdo_password='yourdatabaspassword';  

try {
    // Establish connection to database
    $conn = new PDO($pdo_dsn, $pdo_user, $pdo_password);

    // Throw exceptions in case of error.
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Use prepared statements to mitigate SQL injection attacks.
    // See https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php for more details
    $qry=$conn->prepare('INSERT INTO yourtable (yourcolumn) VALUES (:yourvalue)');

    // Execute the prepared statement using user supplied data.
    $qry->execute(Array(":yourvalue" => $yourfield));

} catch (PDOException $e) {
    echo 'Error: ' . $e->getMessage() . " file: " . $e->getFile() . " line: " . $e->getLine();
    exit;
}
?>
<form method="post">

 <!-- Please note that the quotes around next <?php ... ?> block are important
      to avoid XSS issues with poorly escaped user input. For more details:
      https://stackoverflow.com/a/2894530
  -->
 <input type="text" name="yourfield" value="<?php print $yourfield; ?>">
 <input type="submit" name="youraction" value="save">
</form>

</body>
</html>

这里的关键是使用准备好的语句来避免SQL注入攻击。

 类似资料:
  • 我正在尝试将数据从一个html表单保存到MySQL数据库。我对web dev和JavaScript还是个新手。我有一个表单,用户可以在其中添加行字段,这取决于他们需要多少行。表单可以成功地添加和删除行,但问题是检索所有行字段。当我在form_process php文件中使用$_post时,我只能访问最后一行的详细信息。如何检索用户将要创建的所有行字段,以便将它们保存到数据库? 我试过这些帖子,但它

  • 问题内容: 我的问题是关于数据标准化。 信息 我正在尝试将数据库中的测试结果制成表格。我要记录的信息是test_instance,user_id,test_id,完成(日期/时间),(测试时间),分数,不正确的问题和已复习的问题。 在大多数情况下,我认为我是根据表1来组织信息的,但是我想尽办法找出记录错误或已审查问题的最佳方法有些不为所动。请注意,我 不要 希望把所有不正确的问题集中在一个条目按表

  • 创建根据数据量动态增长的HTML表 使用Python将MySQL数据库中的数据输入到表中 我想要一个不使用PHP的解决方案 我对MySQL、HTML和Python非常陌生,因此非常感谢任何帮助。提前谢谢!

  • 问题内容: 我想保存额外的信息,然后再将总订单发送到Paypal。对于每一项,我都在MySQL数据库中创建了一个要存储的列。现在,我正在考虑将其保存为一个数组,以后可以在创建PHP页面时阅读。多余的字段取自输入表单字段。 通过使用数组,可以确保不混淆信息吗? 问题答案: 您可以使用/ 存储数组。使用该解决方案,它们不能轻易地从其他编程语言中使用,因此您可以考虑使用/ 代替(它为您提供了广泛支持的格

  • 表规范 命名统一小写下划线 非CMF核心应用,统一带应用表前缀,如portal_ 插件表,统一带插件表前缀,如:demo_ 表默认编码utf8mb4,默认排序规则utf8mb4_general_ci 引擎统一innodb 写表注释 字段规范 命名统一小写下划线 非自增主键一定要写字段注释 数据类型尽量用数字类型,数字类型的比字符类型的要快很多。 数据类型尽量小,这里的尽量小是指在满足可以预见的未来

  • 表规范 命名统一小写下划线 非CMF核心应用,统一带应用表前缀,如portal_ 插件表,统一带插件表前缀,如:plugindemo 表默认编码utf8mb4,默认排序规则utf8mb4_general_ci 引擎统一innodb 写表注释 字段规范 命名统一小写下划线 非自增主键一定要写字段注释 数据类型尽量用数字类型,数字类型的比字符类型的要快很多。 数据类型尽量小,这里的尽量小是指在满足可以