English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico PHP

Tutorial Avançado PHP

PHP & MySQL

Manual de Referência PHP

WHERE MySQL PHP

Neste tutorial, você aprenderá como usar PHP para ler registros de uma tabela de banco de dados MySQL com base em condições específicas.

Filtrar registros

WHEREA cláusula WHERE é usada apenas para extrair os registros que satisfazem as condições especificadas.

A sintaxe básica da cláusula WHERE pode ser dada da seguinte forma:

SELECT column_name(s) FROM table_name WHERE column_name operator value

Vamos usar a cláusula WHERE na consulta SQL para realizar uma consulta SQL, e então passar essa consulta para a função mysqli_query() do PHP para executar a consulta e obter os dados filtrados.
Supondo que no banco de dados demo haja uma tabela persons com os seguintes registros:

+----+------------+-----------+----------------------+
| id | first_name | last_name | email |
+----+------------+-----------+----------------------+
|  1 | Peter | Parker | [email protected] |
|  2 | John                   | Rambo                   | [email protected]         |
|  3 | Clark                   | Kent                   | [email protected]         |
|  4 | John                   | Carter                 | [email protected]       |
|  5 | Harry                 | Potter                 | [email protected]     |
+----+------------+-----------+----------------------+

O seguinte código PHP obtémpersonsLer todas as linhas da tabela onde first_name = 'john':

Exemplo: modo orientado a processos

<?php
/* Tente conectar ao servidor MySQL. Suponha que você esteja executando MySQL.
Servidor com configurações padrão (usuário sem senha "root") */
$link = mysqli_connect("localhost", "root", "", "demo");
 
//Verifique a conexão
if($link === false){
    die("Erro: Não foi possível conectar. " . mysqli_connect_error());
}
 
//Tente escolher a execução da consulta
$sql = "SELECT * FROM persons WHERE first_name='john";
if($result = mysqli_query($link, $sql)){
    if(mysqli_num_rows($result) > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = mysqli_fetch_array($result)){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        // Fechar conjunto de resultados
        mysqli_free_result($result);
    } else{
        echo "Não foi encontrado nenhum registro correspondente à sua consulta.";
    }
} else{
    echo "Erro: Não foi possível executar $sql. " . mysqli_error($link);
}
 
//Fechar conexão
mysqli_close($link);
?>

Exemplo: modo orientado a objetos

<?php
/* Tente conectar ao servidor MySQL. Suponha que você esteja executando MySQL.
Servidor com configurações padrão (usuário sem senha "root") */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Verifique a conexão
if($mysqli === false){
    die("Erro: Não foi possível conectar. " . $mysqli->connect_error);
}
 
//Tente escolher a execução da consulta
$sql = "SELECT * FROM persons WHERE first_name='john";
if($result = $mysqli->query($sql)){
    if($result->num_rows > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = $result->fetch_array()){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //Liberar conjunto de resultados
        $result->free();
    } else{
        echo "Não foi encontrado nenhum registro correspondente à sua consulta.";
    }
} else{
    echo "Erro: Não foi possível executar $sql. " . $mysqli->error;
}
 
//Fechar conexão
$mysqli->close();
?>

Exemplo: modo PDO

<?php
/* Tente conectar ao servidor MySQL. Suponha que você esteja executando MySQL.
Servidor com configurações padrão (usuário sem senha "root") */
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", ");
    //Definir o modo de erro PDO como exceção
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("Erro: Não é possível conectar. " . $e->getMessage());
}
 
//Tente escolher a execução da consulta
try{
    $sql = "SELECT * FROM persons WHERE first_name='john";  
    $result = $pdo->query($sql);
    if($result->rowCount() > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = $result->fetch());
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        //Liberar conjunto de resultados
        unset($result);
    } else{
        echo "Não foi encontrado nenhum registro correspondente à sua consulta.";
    }
} catch(PDOException $e){
    die("Erro: Não é possível executar $sql. " . $e->getMessage());
}
 
//Fechar conexão
unset($pdo);
?>

Após a filtragem, o conjunto de resultados será como follows:

+----+------------+-----------+---------------------+
| id | first_name | last_name | email               |
+----+------------+-----------+---------------------+
|  2 | John       | Rambo     | [email protected]  |
|  4 | John       | Carter    | [email protected] |
+----+------------+-----------+---------------------+