PHP (Hypertext Preprocessor) is a widely-used, open-source server-side scripting language designed for web development. This tutorial covers PHP from the ground up, guiding you through installation, basic syntax, and advanced concepts with practical examples. By the end, you’ll be able to build dynamic web applications using PHP.
Table of Contents
- Introduction to PHP
- Setting Up the Environment
- PHP Syntax and Basics
- Variables and Data Types
- Control Structures
- Functions
- Arrays
- Working with Forms
- Connecting to a Database (MySQL)
- Object-Oriented Programming in PHP
- File Handling
- Error Handling
- Security Best Practices
- Building a Simple PHP Application
- Conclusion and Next Steps
Introduction to PHP
PHP is a server-side scripting language embedded in HTML, primarily used for creating dynamic web pages. It powers platforms like WordPress, Joomla, and Drupal. Key features include:
- Cross-platform: Runs on Windows, Linux, macOS, etc.
- Open-source: Free to use and modify.
- Database integration: Works seamlessly with MySQL, PostgreSQL, etc.
- Community support: Large community with extensive documentation.
This tutorial assumes basic knowledge of HTML and CSS. No prior programming experience is required.
Setting Up the Environment
To start coding in PHP, you need a local development environment. We’ll use XAMPP, a popular tool that includes Apache (web server), PHP, and MySQL.
Step 1: Install XAMPP
- Download XAMPP:
- Visit apachefriends.org and download XAMPP for your OS (Windows, macOS, or Linux).
- Install XAMPP:
- Run the installer and follow the prompts. Install all components (Apache, MySQL, PHP, phpMyAdmin).
- Start XAMPP:
- Open the XAMPP Control Panel.
- Start the Apache and MySQL modules.
Step 2: Test PHP Installation
- Create a Test File:
- Navigate to the XAMPP installation directory (e.g.,
C:\xampp
on Windows). - Go to the
htdocs
folder (e.g.,C:\xampp\htdocs
). - Create a file named
test.php
.
- Navigate to the XAMPP installation directory (e.g.,
- Write PHP Code:
<?php phpinfo(); ?>
- Access the File:
- Open a browser and go to
http://localhost/test.php
. - You should see a page displaying PHP configuration details.
- Open a browser and go to
Step 3: Choose a Code Editor
Use a code editor like:
- VS Code (with PHP extensions)
- PHPStorm
- Sublime Text
PHP Syntax and Basics
PHP code is embedded within HTML using <?php ?>
tags. Let’s create a simple PHP page.
Example: Hello World
- Create a file
hello.php
inhtdocs
. - Add the following code:
<!DOCTYPE html> <html> <head> <title>Hello World</title> </head> <body> <?php echo "Hello, World!"; ?> </body> </html>
- Access it via
http://localhost/hello.php
. You’ll see “Hello, World!” displayed.
Key Points
- PHP Tags:
<?php
starts PHP code;?>
ends it. - Echo: Outputs text to the browser.
- Comments:
- Single-line:
//
or#
- Multi-line:
/* */
- Single-line:
Variables and Data Types
Variables store data and are declared with $
. PHP is loosely typed, meaning you don’t need to specify data types.
Example: Variables
<?php
$name = "Alice"; // String
$age = 25; // Integer
$height = 5.6; // Float
$is_student = true; // Boolean
echo "Name: $name, Age: $age, Height: $height, Student: $is_student";
?>
Data Types
- String: Text, e.g.,
"Hello"
- Integer: Whole numbers, e.g.,
42
- Float: Decimal numbers, e.g.,
3.14
- Boolean:
true
orfalse
- Array: Collection of values
- Object: Instance of a class
- NULL: No value
Type Casting
Convert types using (type)
:
<?php
$number = "123";
$int_number = (int)$number;
echo $int_number; // Outputs 123 as an integer
?>
Control Structures
Control structures manage the flow of execution.
Conditional Statements (if, else, elseif)
<?php
$age = 20;
if ($age < 18) {
echo "Minor";
} elseif ($age >= 18 && $age < 65) {
echo "Adult";
} else {
echo "Senior";
}
?>
Loops
- For Loop:
<?php for ($i = 1; $i <= 5; $i++) { echo "Number: $i <br>"; } ?>
- While Loop:
<?php $i = 1; while ($i <= 5) { echo "Number: $i <br>"; $i++; } ?>
- Foreach Loop (for arrays):
<?php $colors = ["Red", "Green", "Blue"]; foreach ($colors as $color) { echo "$color <br>"; } ?>
Functions
Functions are reusable blocks of code.
Defining a Function
<?php
function greet($name) {
return "Hello, $name!";
}
echo greet("Alice"); // Outputs: Hello, Alice!
?>
Function with Default Parameters
<?php
function welcome($name = "Guest") {
return "Welcome, $name!";
}
echo welcome(); // Outputs: Welcome, Guest!
echo welcome("Bob"); // Outputs: Welcome, Bob!
?>
Anonymous Functions
<?php
$greet = function($name) {
return "Hi, $name!";
};
echo $greet("Charlie"); // Outputs: Hi, Charlie!
?>
Arrays
Arrays store multiple values.
Indexed Arrays
<?php
$fruits = ["Apple", "Banana", "Orange"];
echo $fruits[1]; // Outputs: Banana
// Add to array
$fruits[] = "Mango";
print_r($fruits); // Displays array structure
?>
Associative Arrays
<?php
$person = [
"name" => "Alice",
"age" => 25
];
echo $person["name"]; // Outputs: Alice
// Add key-value pair
$person["city"] = "New York";
print_r($person);
?>
Multidimensional Arrays
<?php
$students = [
["name" => "Alice", "grade" => 85],
["name" => "Bob", "grade" => 90]
];
echo $students[0]["name"]; // Outputs: Alice
?>
Array Functions
count($array)
: Returns array lengtharray_push($array, $value)
: Adds element to arraysort($array)
: Sorts array
Working with Forms
PHP handles form data via $_GET
and $_POST
superglobals.
Example: Simple Form
- Create
form.html
:<!DOCTYPE html> <html> <head> <title>Form</title> </head> <body> <form action="process.php" method="post"> Name: <input type="text" name="name"> <input type="submit" value="Submit"> </form> </body> </html>
- Create
process.php
:<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = $_POST["name"]; echo "Hello, $name!"; } ?>
Validating Form Input
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = trim($_POST["name"]);
if (empty($name)) {
echo "Name is required.";
} else {
echo "Hello, $name!";
}
}
?>
Connecting to a Database (MySQL)
PHP integrates with MySQL to store and retrieve data.
Step 1: Set Up MySQL
- Open phpMyAdmin (
http://localhost/phpmyadmin
). - Create a database named
mydb
. - Create a table
users
:CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100) );
Step 2: Connect to MySQL
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydb";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully!";
?>
Step 3: Insert Data
<?php
$sql = "INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
Step 4: Retrieve Data
<?php
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"] . ", Name: " . $row["name"] . ", Email: " . $row["email"] . "<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>
Object-Oriented Programming in PHP
OOP allows you to create reusable classes and objects.
Example: Class and Object
<?php
class Car {
public $brand;
public $color;
public function __construct($brand, $color) {
$this->brand = $brand;
$this->color = $color;
}
public function drive() {
return "Driving a $this->color $this->brand";
}
}
$myCar = new Car("Toyota", "Blue");
echo $myCar->drive(); // Outputs: Driving a Blue Toyota
?>
Inheritance
<?php
class ElectricCar extends Car {
public $battery;
public function __construct($brand, $color, $battery) {
parent::__construct($brand, $color);
$this->battery = $battery;
}
public function charge() {
return "Charging $this->battery battery";
}
}
$tesla = new ElectricCar("Tesla", "Red", "100kWh");
echo $tesla->drive(); // Outputs: Driving a Red Tesla
echo $tesla->charge(); // Outputs: Charging 100kWh battery
?>
File Handling
PHP can read, write, and manipulate files.
Example: Read and Write File
<?php
// Write to file
$content = "Hello, PHP!";
file_put_contents("example.txt", $content);
// Read from file
$read_content = file_get_contents("example.txt");
echo $read_content; // Outputs: Hello, PHP!
?>
Example: Append to File
<?php
$additional_content = "\nMore text!";
file_put_contents("example.txt", $additional_content, FILE_APPEND);
echo file_get_contents("example.txt");
?>
Error Handling
Handle errors gracefully using try-catch
.
Example: Try-Catch
<?php
try {
$number = 0;
if ($number == 0) {
throw new Exception("Division by zero!");
}
echo 10 / $number;
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
?>
Custom Error Handling
<?php
set_error_handler(function($errno, $errstr) {
echo "Custom Error: [$errno] $errstr";
});
echo $undefined_variable; // Triggers custom error
?>
Security Best Practices
- Sanitize Input:
$input = htmlspecialchars($_POST["input"], ENT_QUOTES, 'UTF-8');
- Use Prepared Statements (for MySQL):
$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)"); $stmt->bind_param("ss", $name, $email); $stmt->execute();
- Enable Error Reporting in Development:
ini_set('display_errors', 1); error_reporting(E_ALL);
- Secure Sessions:
session_start(); session_regenerate_id(true);
Building a Simple PHP Application
Let’s build a CRUD (Create, Read, Update, Delete) application for managing users.
Step 1: Database Setup
Use the users
table created earlier.
Step 2: Create Files
- index.php (List users):
<!DOCTYPE html> <html> <head> <title>User Management</title> </head> <body> <h2>Users</h2> <a href="add.php">Add User</a> <table border="1"> <tr> <th>ID</th> <th>Name</th> <th>Email</th> <th>Actions</th> </tr> <?php $conn = new mysqli("localhost", "root", "", "mydb"); $result = $conn->query("SELECT * FROM users"); while ($row = $result->fetch_assoc()) { echo "<tr> <td>{$row['id']}</td> <td>{$row['name']}</td> <td>{$row['email']}</td> <td> <a href='edit.php?id={$row['id']}'>Edit</a> <a href='delete.php?id={$row['id']}'>Delete</a> </td> </tr>"; } $conn->close(); ?> </table> </body> </html>
- add.php (Add user):
<!DOCTYPE html> <html> <head> <title>Add User</title> </head> <body> <h2>Add User</h2> <form action="add.php" method="post"> Name: <input type="text" name="name"><br> Email: <input type="email" name="email"><br> <input type="submit" value="Add"> </form> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $conn = new mysqli("localhost", "root", "", "mydb"); $name = $_POST["name"]; $email = $_POST["email"]; $stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)"); $stmt->bind_param("ss", $name, $email); $stmt->execute(); $conn->close(); header("Location: index.php"); } ?> </body> </html>
- edit.php (Edit user):
<!DOCTYPE html> <html> <head> <title>Edit User</title> </head> <body> <h2>Edit User</h2> <?php $conn = new mysqli("localhost", "root", "", "mydb"); $id = $_GET["id"]; $result = $conn->query("SELECT * FROM users WHERE id = $id"); $row = $result->fetch_assoc(); ?> <form action="edit.php" method="post"> <input type="hidden" name="id" value="<?php echo $row['id']; ?>"> Name: <input type="text" name="name" value="<?php echo $row['name']; ?>"><br> Email: <input type="email" name="email" value="<?php echo $row['email']; ?>"><br> <input type="submit" value="Update"> </form> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $id = $_POST["id"]; $name = $_POST["name"]; $email = $_POST["email"]; $stmt = $conn->prepare("UPDATE users SET name = ?, email = ? WHERE id = ?"); $stmt->bind_param("ssi", $name, $email, $id); $stmt->execute(); $conn->close(); header("Location: index.php"); } ?> </body> </html>
- delete.php (Delete user):
<?php $conn = new mysqli("localhost", "root", "", "mydb"); $id = $_GET["id"]; $conn->query("DELETE FROM users WHERE id = $id"); $conn->close(); header("Location: index.php"); ?>
Step 3: Test the Application
- Access
http://localhost/index.php
. - Add, edit, and delete users using the interface.
Conclusion and Next Steps
You’ve learned the fundamentals of PHP, from syntax to building a CRUD application. To deepen your knowledge:
- Explore frameworks like Laravel or CodeIgniter.
- Learn about Composer for dependency management.
- Study advanced topics like REST APIs and PHP Unit Testing.
- Deploy your PHP app to a hosting provider like Heroku or AWS.
Practice by building more complex applications, such as a blog or e-commerce site. Refer to the PHP Manual for detailed documentation.