A l’instar d’Oracle , MySQL peut être accédée grace ? 2 extensions PHP différentes :
* l’extension standard ‘mysql‘ (ensemble de fonctions préfixées par mysql_)
* l’extension améliorée ou Improved MySQL extension ‘mysqli‘ (ensemble de fonctions préfixées par mysqli_)
l’extension standard ‘mysql’
Cette extension souvent associé ? la version basique du moteur MySQL, utilise 2 ressources principales :
* un identifiant de connexion
* un ensemble de lignes résultats (si le SQL est un SELECT bien sûr) : le result set
Les ordres SQL sont exécutés directement sans phase de préparation (parsing, bind), et non pas comme dans le cas général d’un accès aux BDs via un langage de script.
il n’y a pas non plus de gestion explicite de transaction (commit, rollback) réservée ? la version PRO. Les mises ? jour seront par défaut AUTOCOMMITées
Voici d’après le site officiel PHP, la liste complètes des fonctions de l’extension ‘mysql’ en PHP5
mysql_affected_rows — Retourne le nombre de lignes affectées lors de la dernière opération MySQL
mysql_change_user — Change le nom de l’utilisateur de la connexion active
mysql_client_encoding — Retourne le nom du jeu de caractères utilisé par le client MySQL
mysql_close — Ferme la connexion MySQL
mysql_connect — Ouvre une connexion ? un serveur MySQL
mysql_create_db — Crée une base de données MySQL
mysql_data_seek — Déplace le pointeur interne de résultat MySQL
mysql_db_name — Lit les noms des bases de données
mysql_db_query — Envoie une requête MySQL ? un serveur MySQL
mysql_drop_db — Efface une base de données MySQL
mysql_errno — Retourne le numéro d’erreur de la dernière commande MySQL
mysql_error — Retourne le texte associé avec l’erreur générée lors de la dernière requête
mysql_escape_string — Protège une chaîne pour la passer ? mysql_query
mysql_fetch_array — Retourne une ligne de résultat MySQL sous la forme d’un tableau associatif, d’un tableau indexé, ou les deuxmysql_fetch_assoc — Lit une ligne de résultat MySQL dans un tableau associatif
mysql_fetch_field — Retourne les données enregistrées dans une colonne MySQL sous forme d’objet
mysql_fetch_lengths — Retourne la taille de chaque colonne d’une ligne de résultat MySQL
mysql_fetch_object — Retourne une ligne de résultat MySQL sous la forme d’un objet
mysql_fetch_row — Retourne une ligne de résultat MySQL sous la forme d’un tableau
mysql_field_flags — Retourne des détails sur une colonne MySQL
mysql_field_len — Retourne la taille d’un champ de résultat MySQL
mysql_field_name — Retourne le nom d’une colonne dans un résultat MySQL
mysql_field_seek — Déplace le pointeur de résultat vers une position donnée
mysql_field_table — Retourne le nom de la table MySQL où se trouve une colonne
mysql_field_type — Retourne le type d’une colonne MySQL spécifique
mysql_free_result — Libère le résultat de la mémoire
mysql_get_client_info — Lit les informations sur le client MySQL
mysql_get_host_info — Lit les informations sur l’hôte MySQL
mysql_get_proto_info — Lit les informations sur le protocole MySQL
mysql_get_server_info — Lit les informations sur le serveur MySQL
mysql_info — Lit des informations ? propos de la dernière requête MySQL
mysql_insert_id — Retourne l’identifiant généré par la dernière requête INSERT MySQL
mysql_list_dbs — Liste les bases de données disponibles sur le serveur MySQL
mysql_list_fields — Liste les champs d’une table MySQL
mysql_list_processes — Liste les processus MySQL
mysql_list_tables — Liste les tables d’une base de données MySQL
mysql_num_fields — Retourne le nombre de champs d’un résultat MySQL
mysql_num_rows — Retourne le nombre de lignes d’un résultat MySQL
mysql_pconnect — Ouvre une connexion persistante ? un serveur MySQL
mysql_ping — Pingue le serveur MySQL, et s’y reconnecte au besoin
mysql_query — Envoi une requête ? un serveur MySQL
mysql_real_escape_string — Protège les caractères spéciaux d’une commande SQL
mysql_result — Retourne un champ d’un résultat MySQL
mysql_select_db — Sélectionne une base de données MySQL
mysql_stat — Retourne le statut courant du serveur MySQL
mysql_tablename — Lit le nom de la table qui contient un champ
mysql_thread_id — Retourne l’identifiant du thread MySQL courant
mysql_unbuffered_query — Exécute une requête SQL sans mobiliser les résultats MySQL
Afin d’y voir plus clair, nous allons tenter de les regrouper par types d’opération ou de fonctionnalités
Taxinomie des fonctions MySQL de PHP
connexion mysql_connect, mysql_connect, mysql_close, mysql_ping, (my_sql_select_db, mysql_change_user)
gestion d’erreurs mysql_error, mysql_errno
méta données DB
mysql_field_flags, mysql_field_name, mysql_field_len, mysql_field_table, mysql_field_type, mysql_list_fields, mysql_info, mysql_insert_id,
mysql__num_rows
mysql_list_tables, mysql_table_name
méta données Serveur
mysql_client_encoding, mysql_get_client_info, mysql_get_host_info, mysql_get_proto_info, mysql_get_server_info,
mysql_list_dbs, mysql_ list_processes, mysql_stat, mysql_thread_id
lecture lignes mysql_fetch_array, mysql_fetch_result_row, mysql_fetch_assoc, mysql_fetch_field, mysql_fetch_lengths, mysql_fetch_object, mysql_fetch_row,
execution SQL mysql_drop_db, mysql_db_query, mysql_query, mysql_unbuffered_query
l’extension améliorée ‘mysqli’
Cette extension souvent associé ? la version PRO du moteur MySQL, utilise 3 ressources principales :
* un identifiant de connexion
* un ordre SQL ‘préparé’ explicitement
* un ensemble de lignes résultats (si le SQL est un SELECT bien sûr) : le result set
Les principales fonctionnalités supplémentaires sont les suivantes :
* phase d’analyse préalable des ordres SQL (parsing) que l’on peut éviter de ré exécuter lors d’ordres SQL récurrents ou simililaires
* gestion de pramètres d’entrées associées ? des variables PHP : bind variables
* gestion de transaction (commit, rollback)
* accès direct dans le résult set
* gestion d’erreur et debugging amélioré
PHP5 étant fortement orienté objet, 3 classes prédéfinies sont fournies, qui peuvent agréablement pour les adeptes de la P.O.O se substituer aux fonctions classiques. :
* mysqli : une classe de connexion
* mysqli_statement : une classe pour la gestion de ordres SQL (éventueelemnt ‘préparés’)
* mysqli_result_set : une classe pour la gestion du résultat (lignes ramenées par le SELECT)
La liste complète des fonction de l’extension mysqli ainsi que la description détaillée des méthodes des classes prédéfinies est accessible dans la doc officielle de mysqli sur PHP.net
pour finir, INFOS INTERESSANTES SUR LE SUJET sur le site PHP MYSQL TUTORIAL