如何使用php在提交按钮上保存数据从文本框到数据库

时间:2016-04-23 12:38:05

标签: php html mysqli

我需要使用php将数据从HTML设计的文本框传输到Mysql数据库。我尝试了很多,但没有工作......所以如果有人已经有一个工作代码,那么请告诉我。 我只有两个名为“username”和“password”的文本框和一个提交按钮。 我已经创建了一个db [dbname:userdemo,tablename:users]但没有结果。请使用OOP概念而不是程序。 任何形式的帮助将不胜感激!!!

1 个答案:

答案 0 :(得分:0)

下面的html代码是您的表单外观的摘要,尽管您已经提到过您已完成此部分:

page1.html

<form method="POST" action="page2.php">
  <input type="text" name="usernameForm">
  <input type="password" name="passwordForm">
  <input type="submit" value="Submit">
</form>

下面的php代码然后在用户从表单提交信息后从page1.html获取变量,然后在数据库的表中插入一行。使用此代码时,请不要忘记将所有表名,列等替换为表单上的名称,列等,以及4&#34; ********&#34 ;使代码能够访问您的数据库的变量:

使page2.php

//uses MySQL (PDO)
<?php
$usernameForm = $_POST['usernameForm'];
$passwordForm = $_POST['passwordForm'];

$servername = "********";
$username = "********";
$password = "********";
$myDB = "********";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$myDB", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully"; 

    $sql = "INSERT INTO myTable (username, password) VALUES (:usernameForm, :passwordForm)";
    $stmt = $conn->prepare($sql);
    $stmt->bindParam(':usernameForm', $usernameForm);
    $stmt->bindParam(':passwordForm', $passwordForm);
    $stmt->execute();

    }
catch(PDOException $e)
    {
    echo "Connection failed: " . $e->getMessage();
    }

$conn = NULL;
?>

已编辑:在阅读了您想要在一个页面上拥有所有这些代码的评论之后,一个简单的方法是:

替换此行:

<form method="POST" action="page2.php">

这一行:

<form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">

这里发生的事情如下: PHP代码始终在服务器上运行。当您的网站满载时,您与服务器的连接终止。无论您通过<form>...</form>标签发送到服务器的任何信息都需要与服务器建立连接,这就是为什么一般人们使用两个页面(一个用于输入,另一个用于接收数据),< strong> HOWEVER 有一种简单而通用的方法可以将所有代码保存在一个页面中:让<form>...</form>发送给自己!

要做到这一点,你有两个选择:

  1. 如果您的网页名为page1.php,那么您只需将action="page2.php"替换为action="page1.php"即可。然而,这通常不是很好的编程,因为如果由于某种原因,您的页面名称发生了变化,那么您的代码会中断,这会导致我们选择第二个(也是更好的)选项。
  2. action="page2.php"替换为action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>"。这样做与选项1几乎相同,但action中的php代码询问$ _SERVER超全局页面的名称是什么,从而阻止您的页面被打破&#34;在重命名文件的情况下。