Note : les requêtes préparées sont susceptibles d'être revues. Les informations ci-dessous sont destinées aux nouveaux utilisateurs, mais soyez prévenus qu'elles peuvent changer. Des modifications incompatibles ont été faites en MySQL 4.1.2. Voyez Section 24.2.7, « Description des fonctions C pour les requêtes préparées » pour plus de détails.
        Les requêtes préparées utilisent principalement les deux
        structures MYSQL_STMT et
        MYSQL_BIND :
      
Cette structure représente un pointeur de commande sur une commande préparée. Elle sert pour toutes les fonctions liées aux commandes.
            La commande est initialisée lorsque la requête est
            préparée en utilisant mysql_prepare().
          
La structure est utilisées par toutes les fonctions ultérieures, liées au commandes préparées.
            La structure MYSQL_STMT n'a pas de
            membres utilisables par l'application.
          
Une connexion peut avoir de multiples pointeurs de commandes, et la limite ne dépend que des ressources systèmes.
            Cette structure est utilisée pour lier les paramètres avec
            des buffers, avec mysql_bind_param(),
            pour utilisation avec mysql_execute(),
            ainsi que pour lier les résultats avec des buffers via
            mysql_bind_result()m, lors de la lecture
            de données avec mysql_fetch().
          
            La structure MYSQL_BIND contient les
            membres suivants : Chacun est utilisé pour la lecture et
            l'écriture, mais leur objectifs et parfois différent, en
            fonction du sens de communication.
          
                enum enum_field_types buffer_type
              
                Le type de buffer. Les valeurs possibles pour
                buffer_type sont listées plus loin
                dans cette section. Pour l'envoi,
                buffer_type indique le type de valeur
                que vous allez fournir, lors de l'association de
                paramètres. Pour la réception, cela indique le type de
                valeur que vous pouvez lire dans le buffer de résultat.
              
                void *buffer
              
                Pour l'envoi, c'est un pointeur sur le buffer où sont
                stockées les valeurs du paramètre de la requête. Pour
                la réception, c'est un pointeur sur la valeur
                retournée. Pour les types numériques,
                buffer pointe sur une variable avec
                le bon type C. Si vous associez la variable avec une
                colonne qui a un attribut UNSIGNED,
                la variable doit être de type C
                unsigned. Pour les colonnes de type
                date, buffer doit pointer sur une
                structure MYSQL_TIME. Pour les
                caractères et les chaînes binaires,
                buffer doit pointer sur un buffer de
                caractères.
              
                unsigned long buffer_length
              
                La taille de *buffer en octets. Pour
                les caractères et les données binaires C,
                buffer_length spécifie la taille de
                *buffer à utiliser comme paramètre
                si il est utilisé avec
                mysql_bind_param(), ou la taille lue
                dans le résultat si il est utilisé avec
                mysql_bind_result().
              
                long *length
              
                Un pointeur sur une variable unsigned
                long qui indique le nombre réel d'octets
                stockés dans *buffer.
                length est utilisé pour les données
                de type caractères ou binaires. Pour l'envoi de
                données, length point sur une
                variable unsigned long qui indique la
                taille des valeurs des paramètres stockés dans
                *buffer; cette valeur est utilisée
                par mysql_execute(). Si
                length est un pointeur null, le
                protocole suppose que les données caractères ou
                binaires sont terminées par null. Pour la lecture,
                mysql_fetch() place la taille de la
                valeur de la colonne retournée dans la variable
                length.
              
                length est ignorée pour les valeurs
                numériques et temporelles, car la taille de ces valeurs
                sont déterminées par la valeur de
                buffer_type.
              
                my_bool *is_null
              
                Ce membre pointe sur une variable
                my_bool qui est true si la valeur est
                NULL, et false si elle n'est pas
                NULL. Pour l'envoi, donnez à
                *is_null la valeur de true pour
                indiquer que la valeur que vous émettez est
                NULL. Pour la réception, cette
                valeur sera true après avoir lu une ligne si le
                résultat est NULL.
              
            Cette structure est utilisée pour écrire et lire des
            données de type DATE, TIME et TIMESTAMP, directement avec
            le serveur. Cela se fait en donnant au membre
            buffer_type d'une structure
            MYSQL_BIND un des types temporels, et en
            donnant au membre buffer un pointeur sur
            une structure MYSQL_TIME.
          
            La structure MYSQL_TIME contient les
            membres suivants :
          
                unsigned int year
              
L'année.
                unsigned int month
              
Le mois de l'année.
                unsigned int day
              
Le jour du mois.
                unsigned int hour
              
L'heure du jour.
                unsigned int minute
              
La minute de l'heure.
                unsigned int second
              
La seconde de la minute.
                my_bool neg
              
Un booléen pour indiquer que le temps est négatif.
                unsigned long second_part
              
La partie décimale de la seconde. Ce membre est actuellement inutilisé.
            Seuls les membres d'une structure
            MYSQL_TIME qui s'appliquent à une valeur
            sont utilisés : les éléments year,
            month et day sont
            utilisés pour les types DATE,
            DATETIME et TIMESTAMP;
            les éléments hour,
            minute et second sont
            utilisés pour les types TIME,
            DATETIME et TIMESTAMP.
            See Section 24.2.10, « Gestion des dates et horaires avec l'interface C ».
          
        La table suivante montre les valeurs permises, qui peuvent être
        spécifiées dans le membre buffer_type des
        structures MYSQL_BIND. La table montre aussi
        les types SQL qui correspondent à chaque type de
        buffer_type, et, pour les types numériques
        et temporels, le type C correspondant.
      
| buffer_typeValeur | Type SQL | Type C | 
| MYSQL_TYPE_TINY | TINYINT | char | 
| MYSQL_TYPE_SHORT | SMALLINT | short int | 
| MYSQL_TYPE_LONG | INT | long int | 
| MYSQL_TYPE_LONGLONG | BIGINT | long long int | 
| MYSQL_TYPE_FLOAT | FLOAT | float | 
| MYSQL_TYPE_DOUBLE | DOUBLE | double | 
| MYSQL_TYPE_TIME | TIME | MYSQL_TIME | 
| MYSQL_TYPE_DATE | DATE | MYSQL_TIME | 
| MYSQL_TYPE_DATETIME | DATETIME | MYSQL_TIME | 
| MYSQL_TYPE_TIMESTAMP | TIMESTAMP | MYSQL_TIME | 
| MYSQL_TYPE_STRING | CHAR | |
| MYSQL_TYPE_VAR_STRING | VARCHAR | |
| MYSQL_TYPE_TINY_BLOB | TINYBLOB/TINYTEXT | |
| MYSQL_TYPE_BLOB | BLOB/TEXT | |
| MYSQL_TYPE_MEDIUM_BLOB | MEDIUMBLOB/MEDIUMTEXT | |
| MYSQL_TYPE_LONG_BLOB | LONGBLOB/LONGTEXT | 
Des conversions implicites de type peuvent survenir dans les deux directions de communication.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

