Titre: Requête "SELECT" avec un champ "WHERE"

Exécuter une simple requête SELECT avec un CHAMP `id` qui affiche toutes les lignes retournées.


Solution:

  1. Connexion à la base.
  2. Construction de la requête.
  3. Exécution de la requête (test si la requête s'est bien déroulé)
  4. Boucle pour afficher les résultats

Note:

  1. La variable $code doit avoir préalablement été affectée et doit contenir une valeur numérique.
  2. Les paramètres de connexion MySQL ($serveur, $utilisateur, $motPasse, $nomBaseDonnee) doivent être affectées avant la connexion. [Les scripts sur Multimania ne demande qu'un simple $db=mysql_connect() pour la connexion et la sélection de la base de données]
  3. La base de données et la table doivent être créée avant d'exécuter la requête.
// Connexion à la base de données ou arrêt du script
$db = mysql_connect($serveur, $utilisateur, $motPasse) or 
       die('Erreur de connexion à la base de données <br />Erreur: '.mysql_error()); 
mysql_select_db($nomBaseDonnee, $db);

// Préparation de la requêtes dans une chaine de caractères
// ici la variable $code, est l'id recherché.
$strRequete = 'SELECT id_sites FROM site WHERE id_sites='.$code; 

// Envoi de la requêtes à la base de données
if (  ($resultat = mysql_query($strRequete,$db))  )
{ 
	// Parcours des résultats via un objet
	while ( ($obj = mysql_fetch_object($resultat)) ) 
	{
		// Affichage des numéros d'ID
		echo $obj->id_sites; 
	}

	// Libération de la mémoire 
	// (pour les grosses requêtes seulement, car ce n'est pas obligatoire)
	mysql_free_result($resultat);
}
else {
	echo 'Erreur retournée par MySQL: ' . mysql_error() . 
	    '<br />Requête qui a causée l\'erreur: ' . $strRequete;
}
	

On peut utiliser les fonctions mysql_fetch_object(), mysql_fetch_row() ou mysql_fetch_array() qui retourne respectivement un objet, un tableau (avec indice commencant à 0) et un tableau (avec indice indiquant le titre des colonnes)

Recommandations:

  1. Une requête SELECT en SQL est toujours mieux formulée en écrivant les champs sélectionnés: (en ne parlant pas de limiter la requête avec une partie "WHERE" et ou de créer des indexes appropriés pour améliorer la performance)
    Exemple: 'SELECT champ1,champ2,champ3,champ4 FROM tblTable'
    Pourquoi? parce que si on ajoute des champs après la création de la table, on ne sélectionne pas les nouveaux champs pour rien dans chacune des requêtes déjà préparées.
  2. Si le code ID est de type numérique, il n'est pas obligatoire de mettre la variable entre simples guillemets.
  3. L'utilisation de simple guillemets et de la concaténation est plus rapide que l'utilisation de doubles guillemets et une interprétation des variables.
    Exemple: $strRequete = 'SELECT champ1 FROM site WHERE id_sites = '.$code;

Voir les problème du forum: (monthechristo / 20-08-2002 16:34) et (top50angel / 21-08-2002 18:32 )