Page 1 sur 1

Documentation MySQLi

Posté : 19 mai 2008, 16:44
par Louisss
Bonjour.

Je suis en train de me plonger dans MySQLi et je constate que la documentation en ligne de PHP n'est pas hyper complète.

Par exemple, mysql_connect() contient 2 paramètres optionnels ($new_link et $client_flags) qu'on ne retrouve pas dans mysqli_connect(). Pourquoi ?
- Doit-on en déduire qu'on ne peut pas ouvrir 2 connexions simultanément avec MySQLi ?
- Comment accède-t-on aux possibilités qui étaient offertes par $client_flags (d'après ce qu'on peut lire, MySQLi apporte de nouvelles fonctionnalités, mais n'en supprime pas...) ?

Autre exemple, au sujet de la fermeture d'une connexion MySQLi avec mysqli_close(). Ca se passe comme avec MySQL ou est-ce qu'il y a des nuances ? En particulier, est-ce qu'une connexion est fermée automatiquement en fin de script ?

D'autre part, est-ce qu'il y a des différences majeures à connaître par rapport à MySQL ? Si oui, lesquelles ?

Et enfin, est-ce que quelqu'un connaîtrait un lien vers une doc en ligne plus complète sur le sujet ?

Merci d'avance.

Posté : 19 mai 2008, 17:11
par Berzemus
C'est tout aussi complet, mais c'est vrai qu'il faut lire un peu plus.

La grande différence est que mysqli permet une interrogation de type objet (voir doc).

Pour ce qui est des paramètres (client flags), il y a par exemple celui-ci, sous mysql: MYSQL_CLIENT_SSL

En chercheant un peu, on trouve pour mysqli une fonction ssl_set()
(http://www.php.net/manual/en/mysqli.ssl-set.php)

Et bien sur que tu peux en ouvrir plusieurs..

$connexion1= mysqli_connect()
$connexion2= mysqli_connect()
....
(en procédural)

Posté : 19 mai 2008, 17:23
par Louisss
Merci Berzemus.

Et alors qu'en est-il de la fermeture des connexions ? Parce que là, j'ai bien lu la fiche de mysqli_close() en entier et c'est quand même moins détaillé que celle de mysql_close(). Ou alors c'est détaillé ailleurs ?

Posté : 19 mai 2008, 20:00
par Berzemus
Ben.. tu veux que ça dise quoi, sinon que ça "ferme une connexion" ?

C'est assez explicite...

Et si tu en doutes:
mysqli_close($link);
mysqli_get_server_info($link)
Ou en objet:
$link->close();
echo $link->server_info;
Et il y aura une belle erreur.. (puisque la connexion est fermée..)

Posté : 21 mai 2008, 11:01
par Louisss
Et ben je voudrais que ça réponde à une des questions de mon premier post : est-ce qu'une connexion MySQLi se ferme automatiquement à la fin du script ? Je ne doute pas que mysqli_close() ferme une connexion, mais est-ce qu'on a vraiment besoin de l'utiliser ? Dans la doc sur mysql_close(), il est bien précisé que :
L'utilisation de mysql_close() n'est pas habituellement nécessaire, puisque les connexions non persistantes ouvertes sont automatiquement fermées à la fin l'exécution du script.
Donc, qu'en est-il pour les connexions MySQLi ?

Posté : 21 mai 2008, 11:38
par Berzemus
Comme on peut le supposer, et comme il l'est dit sur le net, dont ici:
http://devzone.zend.com/node/view/id/686
Note that open connections (and similar resources) are automatically destroyed at the end of script execution. However, you should still close or free all connections, result sets and statement handles as soon as they are no longer required. This will help return resources to PHP and MySQL faster.
Oui, on peut certainement s'en passer, mais si on veut faire les chôses bien, on utilise mysqli_close();

Voilà qui répond à ton interrogation :wink: .

Posté : 21 mai 2008, 11:51
par Louisss
Ha, très bien. Merci Berzemus.

J'en profite pour ajouter cet extrait en participations à la doc en ligne sur mysqli_close(). Comme ça, si quelqu'un d'autre se pose la question, il aura la réponse directement dans la doc.
Merci aussi pour le lien, cette page a l'air très intéressante du point de vue d'une description à la fois générale et détaillée de MySQLi. Ca aussi, je trouve que ça manque un peu dans la doc.

Posté : 21 mai 2008, 12:18
par Truc
Modération :
Louisss, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.