Derniers tutoriels de développement web
 

PHP Sélectionnez des données depuis MySQL


Sélectionnez les données d'une base MySQL

L'instruction SELECT permet de sélectionner les données à partir d'une ou plusieurs tables:

SELECT column_name(s) FROM table_name

ou nous pouvons utiliser le caractère * pour sélectionner toutes les colonnes d'une table:

SELECT * FROM table_name

Pour en savoir plus sur SQL, s'il vous plaît visitez notre tutoriel SQL .


Sélectionnez les données avec MySQLi

L'exemple suivant sélectionne les colonnes id, FirstName et LastName de la table MyGuests et il affiche sur la page:

Exemple (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 of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>
»Exécuter exemple

lignes de code pour expliquer l'exemple ci-dessus:

Tout d'abord, nous avons mis en place une requête SQL qui sélectionne les colonnes id, FirstName et LastName de la table MyGuests. La ligne de code suivante exécute la requête et met les données obtenues dans une variable appelée $ result.

Ensuite, la fonction num_rows() vérifie s'il y a plus de zéro lignes retournées.

S'il y a plus de zéro lignes retournées, la fonction fetch_assoc() met tous les résultats dans un tableau associatif que nous pouvons boucle à travers. Le while() boucle boucle à travers l'ensemble de résultats et délivre en sortie les données de l'identifiant, nom et prénom des colonnes.

L'exemple suivant montre le même que l'exemple ci-dessus, de la manière procédurale MySQLi:

Exemple (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 of each row
    while($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 results";
}

mysqli_close($conn);
?>
»Exécuter exemple

Vous pouvez aussi mettre le résultat dans un tableau HTML:

Exemple (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) {
    echo "<table><tr><th>ID</th><th>Name</th></tr>";
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<tr><td>" .$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>";
    }
    echo "</table>";
} else {
    echo "0 results";
}
$conn->close();
?>
»Exécuter exemple

Sélectionnez les données avec AOP (+ Prepared Statements)

L'exemple suivant utilise des instructions préparées.

Il sélectionne les colonnes id, FirstName et LastName de la table MyGuests et affiche dans un tableau HTML:

Exemple (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 resulting array to associative
    $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>";
?>
»Exécuter exemple