PHP CRUD Operation using PDO Extension
In the previous tutorial we learned about PDO Extension. In this tutorial we will learn CRUD operation using PDO Extension.
CRUD Stands for create, read, update and delete record in the database.
File Structure for CRUD Operation
dbconfig.php- used for database connection
tblusers.sql– Contain the structure of the database table
insert.php- used for add a record in the database
index.php– Used for read the record from database .
update.php– Used for updating a record.
Step 1– Create a database
Open browser type http://localhost/phpmyadmin, create a database named ‘phpcrudpdo’ . After creating database run the sql script or import the sql file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
-- Table structure for table `tblusers` -- CREATE TABLE IF NOT EXISTS `tblusers` ( `id` int(11) NOT NULL, `FirstName` varchar(150) NOT NULL, `LastName` varchar(150) NOT NULL, `EmailId` varchar(120) NOT NULL, `ContactNumber` char(11) NOT NULL, `Address` varchar(255) NOT NULL, `PostingDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- Indexes for table `tblusers` -- ALTER TABLE `tblusers` ADD PRIMARY KEY (`id`); -- AUTO_INCREMENT for dumped tables -- AUTO_INCREMENT for table `tblusers` -- ALTER TABLE `tblusers` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; |
Step 2– Create a database connection file (dbconfig.php)
create a dbconfig.php file and place the code given below :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php // DB credentials. define('DB_HOST','localhost'); define('DB_USER','root'); define('DB_PASS',''); define('DB_NAME','phpcrudpdo'); // Establish database connection. try { $dbh = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME,DB_USER, DB_PASS); } catch (PDOException $e) { exit("Error: " . $e->getMessage()); } ?> |
Step 3 : Insert a record in database
Create a insert.php file for insert record in the database . This page include a HTML form with input field where we can fill the data.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>PHP CURD Operation using PDO Extension </title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet"> <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script> </head> <body> <div class="container"> <div class="row"> <div class="col-md-12"> <h3>Insert Record | PHP CRUD Operations using PDO Extension</h3> <hr /> </div> </div> <form name="insertrecord" method="post"> <div class="row"> <div class="col-md-4"><b>First Name</b> <input type="text" name="firstname" class="form-control" required> </div> <div class="col-md-4"><b>Last Name</b> <input type="text" name="lastname" class="form-control" required> </div> </div> <div class="row"> <div class="col-md-4"><b>Email id</b> <input type="email" name="emailid" class="form-control" required> </div> <div class="col-md-4"><b>Contactno</b> <input type="text" name="contactno" class="form-control" maxlength="10" required> </div> </div> <div class="row"> <div class="col-md-8"><b>Address</b> <textarea class="form-control" name="address" required></textarea> </div> </div> <div class="row" style="margin-top:1%"> <div class="col-md-8"> <input type="submit" name="insert" value="Submit"> </div> </div> </form> </div> </div> </body> </html> |
Code for insert a record in database. Once the user filled all the data and click on the submit button then data will be saved in the database using the below code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
<?php // include database connection file require_once'dbconfig.php'; if(isset($_POST['insert'])) { // Posted Values $fname=$_POST['firstname']; $lname=$_POST['lastname']; $emailid=$_POST['emailid']; $contactno=$_POST['contactno']; $address=$_POST['address']; // Query for Insertion $sql="INSERT INTO tblusers(FirstName,LastName,EmailId,ContactNumber,Address) VALUES(:fn,:ln,:eml,:cno,:adrss)"; //Prepare Query for Execution $query = $dbh->prepare($sql); // Bind the parameters $query->bindParam(':fn',$fname,PDO::PARAM_STR); $query->bindParam(':ln',$lname,PDO::PARAM_STR); $query->bindParam(':eml',$emailid,PDO::PARAM_STR); $query->bindParam(':cno',$contactno,PDO::PARAM_STR); $query->bindParam(':adrss',$address,PDO::PARAM_STR); // Query Execution $query->execute(); // Check that the insertion really worked. If the last inserted id is greater than zero, the insertion worked. $lastInsertId = $dbh->lastInsertId(); if($lastInsertId) { // Message for successfull insertion echo "<script>alert('Record inserted successfully');</script>"; echo "<script>window.location.href='index.php'</script>"; } else { // Message for unsuccessfull insertion echo "<script>alert('Something went wrong. Please try again');</script>"; echo "<script>window.location.href='index.php'</script>"; } } ?> |
Step 4 : Read record from the database
Create a index.php file for read all records from database.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
<?php // include database connection file require_once'dbconfig.php'; ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>PHP CRUD Operations using PDO Extension </title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet"> <style type="text/css"> </style> <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script> </head> <body> <div class="container"> <div class="row"> <div class="col-md-12"> <h3>PHP CRUD Operations using PDO Extension</h3> <hr /> <a href="insert.php"><button class="btn btn-primary"> Insert Record</button></a> <div class="table-responsive"> <table id="mytable" class="table table-bordred table-striped"> <thead> <th>#</th> <th>First Name</th> <th>Last Name</th> <th>Email</th> <th>Contact</th> <th>Address</th> <th>Posting Date</th> <th>Edit</th> <th>Delete</th> </thead> <tbody> <?php $sql = "SELECT FirstName,LastName,EmailId,ContactNumber,Address,PostingDate,id from tblusers"; //Prepare the query: $query = $dbh->prepare($sql); //Execute the query: $query->execute(); //Assign the data which you pulled from the database (in the preceding step) to a variable. $results=$query->fetchAll(PDO::FETCH_OBJ); // For serial number initialization $cnt=1; if($query->rowCount() > 0) { //In case that the query returned at least one record, we can echo the records within a foreach loop: foreach($results as $result) { ?> <!-- Display Records --> <tr> <td><?php echo htmlentities($cnt);?></td> <td><?php echo htmlentities($result->FirstName);?></td> <td><?php echo htmlentities($result->LastName);?></td> <td><?php echo htmlentities($result->EmailId);?></td> <td><?php echo htmlentities($result->ContactNumber);?></td> <td><?php echo htmlentities($result->Address);?></td> <td><?php echo htmlentities($result->PostingDate);?></td> <td><a href="update.php?id=<?php echo htmlentities($result->id);?>"><button class="btn btn-primary btn-xs"><span class="glyphicon glyphicon-pencil"></span></button></a></td> <td><a href="index.php?del=<?php echo htmlentities($result->id);?>"><button class="btn btn-danger btn-xs" onClick="return confirm('Do you really want to delete');"><span class="glyphicon glyphicon-trash"></span></button></a></td> </tr> <?php // for serial number increment $cnt++; }} ?> </tbody> </table> </div> </div> </div> </div> </body> </html> |
Step 5 : Update record in the database
Step 5.1 : Get data in HTML From
create update.php file. For updating a record we have to get the row id of that record and store in $id. We access the $_GET[‘id’] variable to do it.
Code for get a record based on the given id. Through this way we can get data autofill-data in HTML Form.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
<?php // Get the userid $userid=intval($_GET['id']); $sql = "SELECT FirstName,LastName,EmailId,ContactNumber,Address,PostingDate,id from tblusers where id=:uid"; //Prepare the query: $query = $dbh->prepare($sql); //Bind the parameters $query->bindParam(':uid',$userid,PDO::PARAM_STR); //Execute the query: $query->execute(); //Assign the data which you pulled from the database (in the preceding step) to a variable. $results=$query->fetchAll(PDO::FETCH_OBJ); // For serial number initialization $cnt=1; if($query->rowCount() > 0) { //In case that the query returned at least one record, we can echo the records within a foreach loop: foreach($results as $result) { ?> <form name="insertrecord" method="post"> <div class="row"> <div class="col-md-4"><b>First Name</b> <input type="text" name="firstname" value="<?php echo htmlentities($result->FirstName);?>" class="form-control" required> </div> <div class="col-md-4"><b>Last Name</b> <input type="text" name="lastname" value="<?php echo htmlentities($result->LastName);?>" class="form-control" required> </div> </div> <div class="row"> <div class="col-md-4"><b>Email id</b> <input type="email" name="emailid" value="<?php echo htmlentities($result->EmailId);?>" class="form-control" required> </div> <div class="col-md-4"><b>Contactno</b> <input type="text" name="contactno" value="<?php echo htmlentities($result->ContactNumber);?>" class="form-control" maxlength="10" required> </div> </div> <div class="row"> <div class="col-md-8"><b>Address</b> <textarea class="form-control" name="address" required><?php echo htmlentities($result->Address);?></textarea> </div> </div> <?php }} ?> <div class="row" style="margin-top:1%"> <div class="col-md-8"> <input type="submit" name="update" value="Update"> </div> </div> </form> |
Step 5.2 : Code for update the record
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?php // include database connection file require_once'dbconfig.php'; if(isset($_POST['update'])) { // Get the userid $userid=intval($_GET['id']); // Posted Values $fname=$_POST['firstname']; $lname=$_POST['lastname']; $emailid=$_POST['emailid']; $contactno=$_POST['contactno']; $address=$_POST['address']; // Query for Updation $sql="update tblusers set FirstName=:fn,LastName=:ln,EmailId=:eml,ContactNumber=:cno,Address=:adrss where id=:uid"; //Prepare Query for Execution $query = $dbh->prepare($sql); // Bind the parameters $query->bindParam(':fn',$fname,PDO::PARAM_STR); $query->bindParam(':ln',$lname,PDO::PARAM_STR); $query->bindParam(':eml',$emailid,PDO::PARAM_STR); $query->bindParam(':cno',$contactno,PDO::PARAM_STR); $query->bindParam(':adrss',$address,PDO::PARAM_STR); $query->bindParam(':uid',$userid,PDO::PARAM_STR); // Query Execution $query->execute(); // Mesage after updation echo "<script>alert('Record Updated successfully');</script>"; // Code for redirection echo "<script>window.location.href='index.php'</script>"; } ?> |
Step 6 : Delete a record from the database
Place this code in the index.php file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php // include database connection file require_once'dbconfig.php'; // Code for record deletion if(isset($_REQUEST['del'])) { //Get row id $uid=intval($_GET['del']); //Qyery for deletion $sql = "delete from tblusers WHERE id=:id"; // Prepare query for execution $query = $dbh->prepare($sql); // bind the parameters $query-> bindParam(':id',$uid, PDO::PARAM_STR); // Query Execution $query -> execute(); // Mesage after updation echo "<script>alert('Record Updated successfully');</script>"; // Code for redirection echo "<script>window.location.href='index.php'</script>"; } ?> |