使用PHP从表单将数据插入MySQL数据库

时间:2016-05-02 09:14:49

标签: php html mysql forms

我创建了一个HTML表单,需要将输入表单的数据直接插入到mySQL的表中。

newuser.php文件

    <?php
//including the connection page
include('./DB_Connect.php');

//get an instance
$db = new Connection();

//connect to database
$db->connect();

  //fetch username and password
  $usertype =  $_POST['userType'];
  $firstname =  $_POST['firstName'];
  $lastname =  $_POST['lastName'];
  $username =  $_POST['userName'];
  $password =  $_POST['password'];
  $address1 =  $_POST['add1'];
  $address2 =  $_POST['add2'];



  //write the sql statement
  $query = "INSERT INTO USERS (usertype, fname, lname, username, password, add1, add2)
  VALUES ('$usertype', '$firstname', '$lastname', '$username', '$password', '$address1', '$address2')";




mysql_query($query,$db);



if (($query) == TRUE) {
  echo "New record created successfully";
   header("Location: login.php", true);
   exit();
}
 else
{
  echo "Error: " . $sql . "<br>" . $conn->error;
   header("Location: register.php", true);
 exit();
}



  //close once finished to free up resources
  $db->close();


?>

使用以下html表单:

    <form action="newuser.php" method="POST" class="form" id="registerForm">
        <label> Type of user: </label> <br>
        <input type="radio" name="userType"  id="itemSeeker">Item Seeker    </input>
        <input type="radio" name="userType"  id="itemDonor">Item Donor </input>
        <input type="radio" name="userType"  id="peopleSeeker">People Seeker </input>
        <input type="radio" name="userType"  id="peopleDonor">People Donor </input>
        <br>
        <br>



        <div class="form-inline">
            <div class="form-group">
                <input type="text" name="firstName" placeholder="First Name: "  align="center" class="form-control" ></input>
            </div>
            <div class="form-group">
                <input type="text" name="lastName" placeholder="Last Name: "  align="center" class="form-control" ></input>
            </div>
        </div>
<br>

        <input type="text" name="email" placeholder="Email Address: "align="center" class="form-control" ></input>
    <br>



    <div class="form-inline">
            <div class="form-group">
                    <input type="text" name="userName" placeholder="Username: " align="center" class="form-control" ></input>
            </div>
            <div class="form-group">
                    <input type="password" name="password" placeholder="Password: " align="center" class="form-control" ></input>
            </div>
    </div>
    <br>

  <!-- <label> Address 1: </label>-->
        <input type="text" name="add1" placeholder="Address 1: " align="center" class="form-control" ></input>
  <!-- <label> Address 2: </label>-->
        <input type="text" name="add2" placeholder="Address 2: " align="center" class="form-control" ></input>
        <br>
  <button class="btn btn-primary" name="submitReg" type="submit">Submit</button><br>
  <br>
  <a href="login.php" >Already have an account?</a>

</form>

USERS表

my table in SQL

上面两段代码和我正在使用的代码。

我的问题是,在提交表单时,数据实际上并没有输入到表中。请注意,第一次提交实际上确实有效。第一个提交后的所有提交似乎都没有在数据库中输入任何内容。

我不太确定我的代码有什么问题导致它无法正常工作。它确实发到了&#39; login.php&#39;页面,这意味着没有任何错误和查询正确提交。

有人可以告诉我我做错了什么,谢谢。

1 个答案:

答案 0 :(得分:0)

现在你有比插入问题更多的麻烦。你的代码完全不安全。 (mysql注入)。

不要使用mysql_ *函数使用pdo代替预备语句!

在发送标题之前输出空格,如果有输出,则无法发送标题。你的重定向不会工作。不要在客户端重定向中继使用可能会禁用它,因此输出您希望用户去的链接。

另一个你的单选按钮没有值检查html语法 var_dump($ _ POST)并检查是否提交了所有内容。还要检查isset或empty befor assign variables。做某种验证。

看看一些php框架,它们提供了更多的灵活性和错误检查

不要通过自己的程序方式在10年或更长时间内写下自己的方式重新发明轮子