Accueil
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
logo
Sommaire > Bases de données > Interfaces de programmation (API) > MySQLi
        Comment installer MySQLi ?
        Peut-on exécuter plusieurs requêtes SQL en une fois avec MySQLi ?
        Comment parcourir les résultats de plusieurs requêtes SQL avc MySQLi ?
        Peut-on faire une connexion persistante avec MySQLi ?
        Que signifie l'erreur 'Commands out of sync' ?



Comment installer MySQLi ?
auteur : Cyberzoide
Pour installer MySQLi il faut rajouter les options suivantes à la directive ./configure lors de l'installation de PHP à partir des sources :
--with-mysqli=/usr/local/mysql/bin/ --without-mysql
/usr/local/mysql/bin/ est à remplacer par le chemin du binaire mysql_config de votre client MySQL.

lien : faq Comment installer une extension pour PHP ?

Peut-on exécuter plusieurs requêtes SQL en une fois avec MySQLi ?
auteur : Julp
Il est possible d'exécuter plusieurs requêtes à la fois en utilisant mysqli_multi_query() :
mysqli_multi_query($db, 'UPDATE une_table SET compteur = compteur + 1; DELETE FROM une_table WHERE compteur > 100');

Une alternative est d'appeler mysqli_query() pour chacune des requêtes.


Comment parcourir les résultats de plusieurs requêtes SQL avc MySQLi ?
auteur : Julp
Il faut considérer les résultats des différentes requêtes comme une liste. C'est à dire qu'on traite ces résultats l'un après l'autre et dans l'ordre dans lequel les requêtes ont été effectuées. La fonction mysqli_store_result permet de charger le résultat de la requête et la fonction mysqli_next_result permet de savoir s'il en reste et de préparer le prochain résultat. Cette dernière ne doit cependant pas être appelée pour le tout premier résultat, d'où une itération de type do { } while();. Vous pouvez ensuite utiliser normalement les fonctions mysqli_fetch_* dans cette boucle pour exploiter le résultat courant. Voici un exemple pour différentes requêtes :
$db = mysqli_connect('localhost', 'julp', 'motdepasse', 'developpez');

$requetes = array(
    'SELECT * FROM boutique',
    'SHOW DATABASES'
);

if (mysqli_multi_query($db, implode(';', $requetes)))
{ // Ne teste que la première
    $i = 0;
    do
{
        if ($result = mysqli_store_result($db))
{
            echo '<table border="1"><caption>' . $requetes[$i] . '</caption><tr>';
            while ($field = mysqli_fetch_field($result))
{
                echo '<th>' . $field->name . '</th>';
            }

            echo '</tr>';

            while ($row = mysqli_fetch_assoc($result))
{
                echo '<tr>';
                foreach ($row as $value)
{
                    echo '<td>' . $value . '</td>';
                }
                echo '</tr>';
            }
            echo '</table>';
        }
        $i++;
    } while (mysqli_next_result($db));
}

Note : les requêtes de modification (comme UPDATE, DELETE ou INSERT) ne renvoyant aucun résultat, la fonction mysqli_store_result() ne les fera, par conséquent, pas apparaître.


Que signifie l'erreur "Commands out of sync" ?
auteur : Julp
Le troisième paramètre facultatif de la fonction mysqli_query (le deuxième pour la méthode équivalente query) a été fixé à la valeur MYSQLI_STORE_RESULT qui indique que la connexion doit refuser toute demande tant que le résultat de la dernière requête effective n'a pas été libéré. Les solutions sont donc de libérer ce résultat (fonction mysqli_free_result ou méthode free_result) ou de supprimer ce paramètre, voire de l'expliciter à la valeur MYSQLI_STORE_RESULT.



Consultez les autres F.A.Q.


Les sources présentés sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2003  Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com