• Aucun résultat trouvé

mysql_fetch_assoc Choix de la base de données Connexion: mysql_connect Exécution d’une requête PHP et MySQL 1

N/A
N/A
Protected

Academic year: 2022

Partager "mysql_fetch_assoc Choix de la base de données Connexion: mysql_connect Exécution d’une requête PHP et MySQL 1"

Copied!
3
0
0

Texte intégral

(1)

1

IFT1147

Programmation Serveur Web avec PHP PHP et MySQL

IFT1147 - PHP et MySQL 2

PHP et MySQL

On peut facilement accéder MySQL à partir de PHP en suivant le modèle

Connexion et choix de la BD

Requête

Lecture, ligne par ligne, du résultat

Fermeture de la connexion

Référence:

http://www.php.net/mysql

IFT1147 - PHP et MySQL 3

Connexion: mysql_connect

On fait le lien avec le serveur MySQL avec la fonction mysql_connect qui prend trois arguments

Nom du serveur

Nom d’usagers

Mot de passe

mysql_connect(’europa’, ’dift1147_web’, ’secret’);

IFT1147 - PHP et MySQL 4

Choix de la base de données

La fonction mysql_select_db est l’équivalent PHP de la fonction USE en ligne de commande. Elle permet de choisir la base de données courante.

mysql_connect(’europa’, ’dift1147_web’, ’secret’);

mysql_select_db(’dift1147_Cinema’);

IFT1147 - PHP et MySQL 5

Exécution d’une requête

mysql_query permet d’exécuter une requête

mysql_fetch_assoc permet ensuite l’accès au résultat:

$reqID = mysql_query(’SELECT * FROM Film’);

while ($ligne = mysql_fetch_assoc($reqID)) { echo $ligne[’titre’];

}

mysql_free_result($reqID);

IFT1147 - PHP et MySQL 6

mysql_fetch_assoc

mysql_fetch_assoc retourne un tableau associatif dont les clés sont les noms des colonnes retournées par la requête SQL.

mysql_fetch_assoc retourne une ligne du résultat à la fois. À chaque appel, le pointeur est avancé d’une ligne dans le résultat.

(2)

2

IFT1147 - PHP et MySQL 7

Terminer la connexion

Finalement, afin de mettre fin à la connexion au serveur MySQL, on utilise la fonction mysql_close().

Il est important de fermer la connexion le plus rapidement possible afin de libérér le serveur MySQL pour d’autres connexions …

IFT1147 - PHP et MySQL 8

INSERT, UPDATE et DELETE

mysql_query permet pas seulement d’exécuter des requêtes SELECT, mais aussi toute autre requête.

Évidemment, s’il ne s’agit pas d’une requête SELECT, on ne fera pas appel à mysql_fetch_assoc par la suite; on est plutôt intéressé à savoir combien de lignes ont été modifiées.

IFT1147 - PHP et MySQL 9

Nombre de lignes

mysql_num_rows($reqID) permet d’obtenir le nombre de lignes retournées par une requête SELECT.

mysql_affected_rows() permet d’obtenir le nombre de lignes modifiées par une requête INSERT, DELETE ou UPDATE.

IFT1147 - PHP et MySQL 10

Déboguer les requêtes

Si une requête contient une erreur SQL, la fonction mysql_query retourne faux.

Dans un serveur de production, on ne veut en général pas afficher le code de la requête SQL qui a échoué, mais seulement un message indiquant que la page n’est pas disponible etc.

Par contre, lors du développement …

IFT1147 - PHP et MySQL 11

mysql_error et mysql_errno

Lors du développement, il est souvent pratique d’obtenir le message d’erreur exact de MySQL.

mysql_error() retourne le texte du message d’erreur; mysql_errorno retourne le numéro de l’erreur.

Le code SQL exact de la requête est aussi indispensable …

IFT1147 - PHP et MySQL 12

Recette mysql_query pour développement

mysql_connect($host,$user,$passwd);

mysql_select_db("dift1147_…");

$sql = "SELECT …";

$requeteID = mysql_query($sql) or die("Erreur SQL " . mysql_errno() . ": " . mysql_error() .

" dans la requête " . $sql);

(3)

3

IFT1147 - PHP et MySQL 13

Pear::DB

Pear::DB est un ensemble de classes disponibles dans Pear.

C’est une des librairies les plus utilisées pour l’accès aux bases de données.

Avantages:

indépendance du type de base de données

Plus de méthodes

Simple gestion des erreurs

IFT1147 - PHP et MySQL 14

Pear::DB - quelques méthodes

$db =& DB::connect()

$res =& $db->query()

while ($row =& $res->fetchRow())

$res->numRows()

$data =& $db->getOne($requete)

$data =& $db->getAll($requete)

IFT1147 - PHP et MySQL 15

Data Objects

Les requêtes pour charger et

sauvegarder des objets dans une base de données sont souvent très répétives et indépendantes de l’objet.

On peut donc séparer la fonctionnalité de l’objet de sa façon d’être sauvegardé.

Pear::DB_DataObject

IFT1147 - PHP et MySQL 16

Data Objects - à considérer

Il faut choisir avec soin (et selon les besoins) la granularité des requêtes.

Charger tous les attributs d’un objet avec une seule requête ou avec plusieurs requêtes au besoin (lazy loading) ?

Retourner des objets ou uniquement des identifiants (ID) à partir des recherches ?

Références

Documents relatifs

Faire attention à l'ordre, on ne supprime pas une table qui a sa clé primaire utilisée dans une contrainte d'une autre table (clé étrangère dans une autre table). Lors de

WHERE NOT EXISTS (SELECT * FROM Commandes WHERE Client = Clients.Cle AND Pizza = Pizzas.Cle)) 9) SELECT SUM (Nombre * Prix).

Cliquez la zone Critères du champ dont vous voulez souhaitez rechercher des enregistrements spécifiques, puis saisissez le premier critère.. Cliquez la zone Ou du champ

L'acquéreur prendra les biens dans l'état où ils se trouvent au jour de la vente, sans pouvoir prétendre à aucune diminution de prix, ni à aucune garantie ou indemnité contre le

Si l'immeuble est libre de location et d'occupation ou occupé, en tout ou partie par des personnes ne justifiant d'aucun droit ni titre, à l'expiration du délai de

À défaut par l'acquéreur de payer dans les délais prescrits le prix ou les frais taxés, le bien est remis en vente à la demande du créancier poursuivant, d'un

Les parties peuvent même, par la requête conjointe, aller jusqu’à priver le juge de son pouvoir juridictionnel : dans un arrêt de la Cour de cassation, les

Préciser la date retournée par le serveur lors de la réponse HTTP4. Quelle partie de la réponse du serveur s’affiche sur l’écran