How to insert data into database using PHP in PDO?

How to insert data into database using PHP in PDO?

  • August 10, 2020
  • PHP

Step 1. Create Database "demo".Go through PHPMyAdmin and create database.

After logging into your phpMyAdmin page.We will create a database named demo for our database.

Step 2. Create Users Table

You can create a new table by clicking the Create Table button near the bottom of the page. After that, you will be directed to a new page where you can enter all the information needed for your table:

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `full_name` varchar(250) NOT NULL,
  `email_id` varchar(250) NOT NULL,
  `phone_number` varchar(20) NOT NULL,
  `dob` date NOT NULL,
  `gender` varchar(20) NOT NULL,
  `job_type` varchar(100) NOT NULL,
  `user_name` varchar(50) NOT NULL,
  `password` varchar(250) NOT NULL,
  `created_at` datetime NOT NULL DEFAULT current_timestamp(),
  `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER TABLE `users`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `users`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;

Step 3. we need a connection to the database first which is done by creating a new PDO object . As the connection to the MySQL database is a PDO object, you must use various PDO methods.
PDO allows you to prepare SQL code before it is executed. The SQL query is evaluated and corrected before being run. A simplified SQL injection attack could be done just by typing SQL code into a field on a form.

Create db-connection.php File.

<?php
    define('DB_HOST', 'localhost');     // Host name
    define('DB_USER', 'root');         // DB User Name
    define('DB_PASS', '');             // DB User Password Name
    define('DB_NAME', 'demo');         // DB Name
    
    // Create a new connection to the MySQL database using PDO, $dbh is an object
    
    try {
        $dbh = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASS);
    }
    catch (PDOException $e) {
        exit("Error: " . $e->getMessage());
    }

?>

Step 4. Creating the HTML Form.Here's a simple HTML form with a submit button.

index.php

<!DOCTYPE html>
<html>
    <head>
        <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
        <script src="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
        <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/jquery.validate.min.js"></script>
        <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.8/css/all.css">
        <style>
            .divider-text {
                position: relative;
                text-align: center;
                margin-top: 15px;
                margin-bottom: 15px;
            }
            .divider-text span {
                padding: 7px;
                font-size: 12px;
                position: relative;   
                z-index: 2;
            }
            .divider-text:after {
                content: "";
                position: absolute;
                width: 100%;
                border-bottom: 1px solid #ddd;
                top: 55%;
                left: 0;
                z-index: 1;
            }

            .btn-facebook {
                background-color: #405D9D;
                color: #fff;
            }
            .btn-twitter {
                background-color: #42AEEC;
                color: #fff;
            }
        </style>
    </head>
    <body>
        <div class="container">        
            <div class="card bg-light">
                <article class="card-body mx-auto" style="max-width: 400px;">
                    <p>
                        <a href="login.php" class="btn btn-block btn-twitter">Login</a>
                        <a href="register.php" class="btn btn-block btn-facebook">Register</a>
                    </p>
                
                    <h4 class="card-title mt-3 text-center">Create Account</h4>
                    <form name="add-user" id="add-user" action="add-user-process.php" method="POST">
                        <div class="form-group input-group">
                            <div class="input-group-prepend">
                                <span class="input-group-text"> <i class="fa fa-user"></i> </span>
                             </div>
                            <input name="full_name" id="full_name" class="form-control" placeholder="Enter Youe Full Name" type="text">
                        </div>
                        <div class="form-group input-group">
                            <div class="input-group-prepend">
                                <span class="input-group-text"> <i class="fa fa-envelope"></i> </span>
                             </div>
                            <input name="email_id" id="email_id" class="form-control" placeholder="Enter Your Email Id" type="email">
                        </div>
                        <div class="form-group input-group">
                            <div class="input-group-prepend">
                                <span class="input-group-text"> <i class="fa fa-phone"></i> </span>
                            </div>
                            <input name="phone_number" id="phone_number" class="form-control" placeholder="Enter Your Phone Number" type="text">
                        </div>
                        <div class="form-group input-group">
                            <div class="input-group-prepend">
                                <span class="input-group-text"> <i class="fa fa-building"></i> </span>
                            </div>
                            <input name="dob" id="dob" class="form-control" type="date">
                        </div>
                        <div class="form-group input-group">
                            <div class="input-group-prepend">
                                <span class="input-group-text"> <i class="fa fa-user"></i> </span>
                            </div>
                            <select class="form-control" name="gender" id="gender">
                                <option selected=""> Select Gender</option>
                                <option value="Male">Male</option>
                                <option value="Female">Female</option>
                            </select>
                        </div>
                        <div class="form-group input-group">
                            <div class="input-group-prepend">
                                <span class="input-group-text"> <i class="fa fa-building"></i> </span>
                            </div>
                            <select class="form-control" name="job_type" id="job_type">
                                <option selected=""> Select Job Type</option>
                                <option value="Designer">Designer</option>
                                <option value="Manager">Manager</option>
                                <option value="Accaunting">Accaunting</option>
                            </select>
                        </div>
                        <div class="form-group input-group">
                            <div class="input-group-prepend">
                                <span class="input-group-text"> <i class="fa fa-user"></i> </span>
                            </div>
                            <input name="user_name" id="user_name" class="form-control" placeholder="Enter User Name" type="text">
                        </div>      
                        <div class="form-group input-group">
                            <div class="input-group-prepend">
                                <span class="input-group-text"> <i class="fa fa-lock"></i> </span>
                            </div>
                            <input name="password" id="password" class="form-control" placeholder="Create Your Password" type="password">
                        </div>                
                        <div class="form-group">
                            <button type="submit" class="btn btn-primary btn-block" name="add-user" id="add-user" value="Create Account">Create Account</button>
                        </div>                                                                 
                    </form>
                </article>
            </div>
            <script>
                $(function() {
                    $("form[name='add-user']").validate({
                        rules: {
                            full_name:         "required",
                            email_id:       "required",
                            phone_number:   "required",
                            dob:               "required", 
                            gender:         "required",
                            job_type:          "required",
                            user_name:      "required",
                            password:       "required"
                        },
                        messages: {
                            full_name:         "Please Enter Full Name",
                            email_id:       "Please Enter Your Email Id",
                            phone_number:   "Please Enter Your Phone Number",
                            dob:               "Please Slect DOB",
                            gender:         "Please Select Gender",
                            job_type:          "Please Select Job Type",
                            user_name:      "You must enter a Username",
                            password:       "Please Enter Password"
                        },
                        submitHandler: function(form) {
                            form.submit();
                        }
                    });
                });
            </script>
        </div> 
    </body>
<html>

 

Step 5. Retrieving and Inserting the Form Data.
When a user clicks the submit button of the add record HTML form, in the example above, the form data is sent to 'add-user-process.php' file. The 'add-user-process.php' file connects to the MySQL database server, retrieves forms fields using the PHP $_POST variables and finally execute the insert query to add the records. Here is the complete code of our 'add-user-process.php' file:

Create add-user-process.php File

<?php 
    include_once("db-connection.php");
    if(isset($_POST["add-user"]) && $_POST["add-user"]=="Create Account"){
         if(isset($_POST["full_name"]) && !empty($_POST["full_name"]) && isset($_POST["email_id"]) && !empty($_POST["email_id"])  && isset($_POST["phone_number"]) && !empty($_POST["phone_number"]) && isset($_POST["dob"]) && !empty($_POST["dob"]) && isset($_POST["gender"]) && !empty($_POST["gender"])  && isset($_POST["job_type"]) && !empty($_POST["job_type"]) && isset($_POST["user_name"]) && !empty($_POST["user_name"])  && isset($_POST["password"]) && !empty($_POST["password"])) { 
            
            $full_name = trim($_POST["full_name"]);
            $email_id = trim($_POST["email_id"]);
            $phone_number = trim($_POST["phone_number"]);
            $dob = trim($_POST["dob"]);
            $gender = trim($_POST["gender"]);
            $job_type = trim($_POST["job_type"]);
            $user_name = trim($_POST["user_name"]);
            $password = sha1(trim($_POST["password"]));
            
            $stmt = $dbh->prepare("INSERT INTO `users` (`full_name`, `email_id`, `phone_number`, `dob`, `gender`, `job_type`, `user_name`, `password`) VALUES (:full_nametest, :email_idtest, :phone_numbertest, :dobtest, :gendertest, :job_typetest, :user_nametest, :passwordtest)");
            $return = $stmt->execute(['full_nametest' => $full_name, 'email_idtest' => $email_id, 'phone_numbertest' => $phone_number, "dobtest"=>$dob, 'gendertest' => $gender, 'job_typetest' => $job_type, 'user_nametest' => $user_name, "passwordtest"=>$password]);
            if($return){
                echo "<script>if(confirm('User Scuessfully Added')) document.location = 'index.php';</script>";
            }else{
                echo "<script>if(confirm('Error User In Insertion')) document.location = 'index.php';</script>";
            }
        } else {
            echo "<script>document.location = 'index.php';</script>";
        }
    }
 ?>