Display SQL query results in php
Categories:
Displaying SQL Query Results in PHP: A Comprehensive Guide

Learn how to connect to a MySQL database, execute SQL queries, and effectively display the results in your PHP web applications. This guide covers best practices for data retrieval and presentation.
Displaying data from a database is a fundamental task in web development. PHP, combined with MySQL (or other relational databases), provides a robust way to achieve this. This article will walk you through the essential steps, from establishing a database connection to fetching and presenting your SQL query results in a user-friendly format.
1. Establishing a Database Connection
Before you can query any data, your PHP script needs to connect to the MySQL database. The most common and recommended way to do this is using the PDO
(PHP Data Objects) extension, which provides a lightweight, consistent interface for accessing databases. Alternatively, the MySQLi
extension is also a good choice, especially if you're exclusively working with MySQL.
<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// Set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
PHP code for connecting to a MySQL database using PDO.
2. Executing SQL Queries and Fetching Data
Once connected, you can execute SQL queries to retrieve data. For SELECT
statements, you'll typically fetch the results into an array or iterate over them directly. PDO offers various fetch modes to control how the results are returned (e.g., associative array, numeric array, object).
<?php
// Assuming $conn is your active PDO connection
try {
$stmt = $conn->prepare("SELECT id, firstname, lastname, email FROM users");
$stmt->execute();
// Set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
$users = $stmt->fetchAll();
if (count($users) > 0) {
echo "Data fetched successfully!";
// You can now loop through $users to display data
} else {
echo "No results found.";
}
} catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
?>
Executing a SELECT query and fetching all results into an associative array using PDO.
sequenceDiagram participant Client participant PHP_Script as PHP Script participant Database as MySQL Database Client->>PHP_Script: HTTP Request PHP_Script->>Database: Connect("host", "user", "pass") Database-->>PHP_Script: Connection Status PHP_Script->>Database: Prepare("SELECT * FROM users") Database-->>PHP_Script: Statement Handle PHP_Script->>Database: Execute Statement Database-->>PHP_Script: Result Set PHP_Script->>PHP_Script: Fetch Data (e.g., PDO::FETCH_ASSOC) PHP_Script-->>Client: Rendered HTML with Data
Sequence diagram illustrating the flow of data retrieval from client request to displaying results.
3. Displaying Results in HTML
The most common way to display query results in a web application is within an HTML table or a list. Iterating through the fetched data and dynamically generating HTML elements allows for flexible and structured presentation. Remember to escape output to prevent XSS vulnerabilities.
<?php
// Assuming $users contains the fetched data from the previous step
if (isset($users) && count($users) > 0) {
echo "<table border='1'>";
echo "<tr><th>ID</th><th>First Name</th><th>Last Name</th><th>Email</th></tr>";
foreach ($users as $user) {
echo "<tr>";
echo "<td>" . htmlspecialchars($user['id']) . "</td>";
echo "<td>" . htmlspecialchars($user['firstname']) . "</td>";
echo "<td>" . htmlspecialchars($user['lastname']) . "</td>";
echo "<td>" . htmlspecialchars($user['email']) . "</td>";
echo "</tr>";
}
echo "</table>";
} else {
echo "<p>No users found.</p>";
}
// Close connection (optional for PDO, as it closes when script ends)
$conn = null;
?>
Displaying fetched user data in an HTML table.
htmlspecialchars()
or htmlentities()
when displaying user-generated or database-retrieved content in HTML to prevent Cross-Site Scripting (XSS) attacks. This sanitizes the output by converting special characters into HTML entities.4. Handling No Results and Errors
A robust application should gracefully handle cases where no data is returned or when an error occurs during the database operation. This involves checking the number of rows returned and catching PDOException
for error reporting.
As shown in the previous code examples, checking if (count($users) > 0)
is a simple way to determine if any records were found. For errors, the try...catch
block around PDO operations is crucial for catching exceptions and displaying informative (but not overly detailed to the end-user) error messages.