PHP MySQL Form handling


Form handling with PHP and MySQL involves several steps: creating an HTML form, processing the form data with PHP, and storing or retrieving data from a MySQL database. Below is a comprehensive guide to handling forms in PHP and MySQL.

Steps for Form Handling with PHP and MySQL

1. Create an HTML Form

First, create an HTML form where users can input data. The form will use the POST or GET method to send data to a PHP script.

<!DOCTYPE html>
<html> <head> <title>Form Handling</title> </head> <body> <form action="process_form.php" method="post"> <label for="name">Name:</label> <input type="text" id="name" name="name" required> <br> <label for="email">Email:</label> <input type="email" id="email" name="email" required> <br> <input type="submit" value="Submit"> </form> </body> </html>
  • action: The URL of the PHP script that will process the form data (process_form.php).
  • method: The HTTP method to be used (post or get).

2. Process Form Data with PHP

Create a PHP script (process_form.php) to handle the form data. This script will validate and sanitize the input data, then interact with the MySQL database.

<?php
// Database connection $host = 'localhost'; $username = 'username'; $password = 'password'; $database = 'database'; $conn = mysqli_connect($host, $username, $password, $database); if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } // Get form data $name = $_POST['name']; $email = $_POST['email']; // Validate and sanitize input $name = mysqli_real_escape_string($conn, $name); $email = mysqli_real_escape_string($conn, $email); // Prepare and execute SQL query $sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')"; if (mysqli_query($conn, $sql)) { echo "New record created successfully"; } else { echo "Error: " . mysqli_error($conn); } // Close the connection mysqli_close($conn); ?>
  • Database Connection: Use mysqli_connect() to establish a connection to the MySQL database.
  • Get Form Data: Use $_POST to retrieve data from the form.
  • Validate and Sanitize: Use mysqli_real_escape_string() to prevent SQL injection.
  • Prepare and Execute Query: Use mysqli_query() to execute an SQL query.
  • Error Handling: Check if the query was successful and handle errors if necessary.
  • Close Connection: Close the database connection with mysqli_close().

3. Display Data from MySQL

To display data retrieved from MySQL, you can create a PHP script that queries the database and outputs the results.

<?php
// Database connection $conn = mysqli_connect('localhost', 'username', 'password', 'database'); if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } // Query the database $sql = "SELECT name, email FROM users"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { // Output data for each row while ($row = mysqli_fetch_assoc($result)) { echo "Name: " . $row['name'] . " - Email: " . $row['email'] . "<br>"; } } else { echo "No results found"; } // Close the connection mysqli_close($conn); ?>

4. Additional Considerations

  • Form Validation: Perform server-side validation to ensure data integrity and security. Consider using PHP functions like filter_var() for validation and sanitation.

  • Error Handling: Always handle errors gracefully and provide user-friendly messages.

  • Prepared Statements: For enhanced security, use prepared statements with parameterized queries to prevent SQL injection.

  • Security: Implement additional security measures such as CAPTCHA, CSRF tokens, and user authentication if necessary.

  • User Feedback: Provide appropriate feedback to users after form submission, such as success or error messages.

Example of Complete Workflow

  1. HTML Form: Collect user data.
  2. PHP Processing Script: Validate, sanitize, and store data.
  3. PHP Display Script: Retrieve and display data.