De nombreuses fonctions de bases de données permettent d'extraire des informations telles que des enregistrements ou des champs précis d'une ou plusieurs tables.

Subséquemment à l'exécution d'une requête, des fonctions spécialisées s'occupent de l'extraction de données ciblées.

$requete = "SELECT nom, prenom, adresse, cp, ville"
                 . "FROM tbl_client";

// Sous Microsoft SQL Server
$id_connexion = mssql_connect("localhost", "jjfredo", "02h4Ypl3");
mssql_select_db("bd_commerce");
$id_resultat = mssql_query($requete, $id_connexion);

// Sous Oracle
$id_connexion = ocilogon("jjfredo", "02h4Ypl3", "bd_commerce");
$id_resultat = ociparse($requete);
ociexecute($id_resultat);

Lorsque le résultat d'une requête devient disponible, le pointeur d'enregistrement se situe sur la première ligne de la table, soit à l'index '0'.

Index Champ_1 Champ_2 Champ_3
0 Valeur_1 Valeur_2 Valeur_3
1 Valeur_1 Valeur_2 Valeur_3

...

N Valeur_1 Valeur_2 Valeur_3

A partir de là, il suffit de déplacer le pointeur par une incrémentation de l'index ou de le placer directement à un index spécifié. Chaque ligne pourra alors délivrer la totalité de son contenu.

// Sous Microsoft SQL Server
echo "<table>";
// décompte du nombre d'enregistrements
for($i = 0; $i < mssql_num_rows($id_resultat); $i++)
{
  echo "<tr><th>" . $i . "</th><td>";
  // lecture de l'enregistrement
  print_r(mssql_fetch_row($id_resultat));
  echo "</td></tr>";
  // déplacement du pointeur
  mssql_data_seek($id_resultat, $i);
}
echo "</table>";

// Sous Oracle
while(ocifetch($id_resultat))
{
  // lecture de l'enregistrement
  ocifetchinto($id_resultat, $ligne);
  print_r($ligne);
}
// ou
$nb_lignes = ocifetchstatement($id_resultat, $table_resultante);
for($i = 1; $i <= $nb_lignes; $i++)
{
  $ligne = array_slice($table_resultante, $i, 1);
  print_r($ligne);
}

Des fonctions de déplacement du pointeur s'occupent de désigner soit un enregistrement, soit un champ pour une utilisation ultérieure comme l'extraction, la modification ou encore la suppression des données.

// Sous Microsoft SQL Server
echo "<table>";
// décompte du nombre de champs
for($i = 0; $i < mssql_num_fields($id_resultat); $i++)
{
  echo "<tr><th>" . $i . "</th><td>";
  // lecture des informations sur le champ
  print_r(mssql_fetch_field($id_resultat));
  echo "</td></tr>";
  // déplacement du pointeur
  mssql_field_seek($id_resultat, $i);
}
echo "</table>";

// Sous Oracle
while(ocifetch($id_resultat))
{
  for($i = 1; $i <= ocinumcols($id_resultat); $i++)
  {
    echo ociresult($id_resultat, $i);
  }
}

Le décompte total des enregistrements ou des champs d'une table, peut être obtenu par l'intermédiaire de certaines fonctions.

$nb_champs = msql_num_fields($id_resultat);
$nb_lignes = msql_num_rows($id_resultat);

$nb_champs = mysql_num_fields($id_resultat);
$nb_lignes = mysql_num_rows($id_resultat);

$nb_champs = ociNumCols($id_resultat);
$nb_lignes = ociRowCount($id_resultat);

$nb_champs = pg_NumFields($id_resultat);
$nb_lignes = pg_NumRows($id_resultat);

$nb_champs = sybase_num_fields($id_resultat);
$nb_lignes = sybase_num_rows($id_resultat);

A partir des enregistrements, chacun des champs devient accessible aisément par des fonctions appropriées.

En outre, certaines fonctions sont capables d'extraire directement un champ déterminé avec exactitude.

$valeur = mssql_result($id_resultat, $num_ligne, $num_col);

$valeur = msql_result($id_resultat, $num_ligne, $num_col);

$valeur = mysql_result($id_resultat, $num_ligne, $num_col);

$valeur = pg_result($id_resultat, $num_ligne, $num_col);

$valeur = sybase_result($id_resultat, $num_ligne, $num_col);

Afin d'éviter une surcharge de la mémoire, des instructions PHP permettent de libérer les ressources suite au terme de leur utilisation.

mssql_free_result($id_resultat);

msql_free_result($id_resultat);

mysql_free_result($id_resultat);

sybase_free_result($id_resultat);

Le langage PHP prend en charge la plupart des SGBDR courants, lui procurant ainsi un panel impressionnant d'outils visant à exploiter pleinement n'importe quel type de bases de données.

Exemple [voir]
<!-- Formulaire -->
<html>
  <body>
    <form method="POST" action="traitement.php">
      <input type="text" name="nom" size="20" value="nom"><br>
      <input type="text" name="prenom" size="20" value="prenom"><br>
      <input type="text" name="email" size="20" value="email"><br>
      <input type="submit" name="soumission" value="Soumettre">
    </form>
  </body>
</html>

<?php
// fichier : traitement.php
  $id_connex = mysql_connect("localhost","root","emma")
        or die("La connexion a échoué !");

  $id_liste_bases = mysql_list_dbs($id_connex);

  $trouve = false;
  while($ligne = mysql_fetch_assoc($id_liste_bases))
  {
    if ($ligne['Database'] == 'utilisateur')
    {
      $trouve = true; 
    }
  }
  if(!$trouve)
  {
    mysql_create_db("utilisateur")
        or die("La création de la base a échoué !");
  }

  $id_select = mysql_select_db ("utilisateur")
        or die("La sélection de la base a échoué !");
  $id_liste_tables = mysql_list_tables ('utilisateur', $id_connex);

  $trouve = false;
  for($i = 0; $i < mysql_num_rows($id_liste_tables); $i++)
  {
    if (mysql_tablename($id_liste_tables, $i) == 'tbl_utilisateur')
    {
      $trouve = true; 
    }
  }
  if(!$trouve)
  {
    mysql_query("create table tbl_utilisateur "
                 . "(date CHAR(30) NOT NULL, email CHAR(50) UNIQUE, " 
                 . "nom CHAR(50) NOT NULL)", $id_connex) 
        or die("La création de la table a échoué !");
  }

  if($id_select)
  {
    mysql_query("insert into tbl_utilisateur (date, email, nom) " 
                 . "values ('" . date("d/m/Y H:i:s") . "', '" . $email
                 .  "', '" . $prenom . " " . $nom . "')", $id_connex)
      or die("Impossible d'insérer les informations !");
  }
  else
  {
    echo "<h3>Impossible de sélectionner la table !</h3>";
  }

  $id_requete = mysql_query("select * from tbl_utilisateur", $id_connex);
  if($id_requete)
  {
    echo '<table border="0">' 
            . '<tr bgcolor="#000000" style="color:#FFFFFF">';

    $id_champs = mysql_list_fields("utilisateur", "tbl_utilisateur", $id_connex);
    $nb_champs = mysql_num_fields($id_requete);
    for ($i = 0; $i < $nb_champs; $i++)
    {
      echo '<th>' . mysql_field_name($id_requete, $i) . '</th>'
    }
    echo '</tr>';

    for($i = 0; $i < mysql_num_rows($id_requete); $i++)
    {
      echo '<tr bgcolor ="#FFFF00">';
      for($j = 0; $j < mysql_num_fields($id_requete); $j++)
      {
        echo '<td>' . mysql_result($id_requete, $i, $j) . '</td>';
      }
      echo '<tr>';
    }
    echo '</table>';
    mysql_free_result($id_requete);
  }
  else
  {
    echo "<h3>Impossible d'exécuter la requête de sélection !</h3>";
  }
  mysql_close();
?>