PHP MySQL Read Data

Read Data from MySQL Database

The SELECT statement is used to read data from a table:

SELECT column_name(s) FROM table_name

We can use the * sign to read all fields in the table:

SELECT * FROM table_name

To learn more about SQL, please visit ourSQL Tutorial。


Using MySQLi

In the following example, we read the id, firstname, and lastname columns from the MyGuests table in the myDB database and display them on the page:

Example (MySQLi - Object-oriented)

<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; //Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed:" . $conn->connect_error); } $sql = "SELECT id, firstname, lastname FROM MyGuests"; $result = $conn->query($sql); if ($result->num_rows > 0) { //Output data while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "0 results"; } $conn->close(); ?>

The above code analysis is as follows:

First, we set the SQL statement to read the three fields id, firstname, and lastname from the MyGuests table. Then we use this SQL statement to retrieve the result set from the database and assign it to the variable $result.

The num_rows() function checks the returned data.

If multiple rows are returned, the fetch_assoc() function puts the result set into an associative array and outputs it in a loop. The while() loop iterates through the result set and outputs the values of the three fields id, firstname, and lastname.

The following example uses the MySQLi procedural approach, with similar effects to the code above:

Example (MySQLi - Procedural)

<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; //Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) { die("Connection failed:" . mysqli_connect_error()); } $sql = "SELECT id, firstname, lastname FROM MyGuests"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { //Output data while($row = mysqli_fetch_assoc($result)) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "0 results"; } mysqli_close($conn); ?>


Using PDO (+ Prepared Statements)

The following example uses prepared statements.

It selects the id, firstname, and lastname fields from the MyGuests table and places them in an HTML table:

Example (PDO)

<?php echo "<table style='border: solid 1px black;'>"; echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>"; class TableRows extends RecursiveIteratorIterator { function __construct($it) { parent::__construct($it, self::LEAVES_ONLY); } function current() { return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>"; } function beginChildren() { echo "<tr>"; } function endChildren() { echo "</tr>" . "\n"; } } $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDBPDO"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests"); $stmt->execute(); //Set the result set to an associative array $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { echo $v; } } catch(PDOException $e) { echo "Error: " . $e->getMessage(); } $conn = null; echo "</table>"; ?>

Other extensions