Maison >base de données >tutoriel mysql >Fonctions liées au temps pour démarrer avec MySQL
Le protocole binaire vous permet d'envoyer et de recevoir des valeurs de date et d'heure (DATE, TIME, DATETIME et TIMESTAMP) en utilisant la structure MYSQL_TIME. Les membres de cette structure sont décrits dans la Section 25.2.5, « Types de données pour les instructions préparées par l'API C ».
Pour envoyer des valeurs de données temporaires, vous pouvez utiliser mysql_stmt_prepare() pour créer des instructions préparées. Ensuite, avant d'appeler mysql_stmt_execute() pour exécuter l'instruction, vous pouvez utiliser les étapes suivantes pour définir chaque paramètre temporaire :
Dans la structure MYSQL_BIND associée à la valeur des données, définissez le membre buffer_type sur le type correspondant, qui spécifie le type de valeur temporaire envoyée. Pour les valeurs DATE, TIME, DATETIME ou TIMESTAMP, définissez buffer_type sur MYSQL_TYPE_DATE, MYSQL_TYPE_TIME, MYSQL_TYPE_DATETIME ou MYSQL_TYPE_TIMESTAMP respectivement.
Définissez le membre tampon de la structure MYSQL_BIND sur l'adresse de la structure MYSQL_TIME utilisée pour transmettre les valeurs temporaires.
Remplissez les membres de la structure MYSQL_TIME en fonction du type de support temporaire que vous comptez transmettre.
Utilisez mysql_stmt_bind_param() pour lier les données de paramètre à une instruction. Mysql_stmt_execute() peut alors être appelé.
Pour récupérer une valeur temporaire, suivez des étapes similaires, mais définissez le membre buffer_type sur le type de valeur que vous avez l'intention d'accepter, et définissez le membre buffer sur l'adresse de la structure MYSQL_TIME dans laquelle la valeur de retour doit être placé. Après avoir appelé mysql_stmt_execute() et avant d'obtenir les résultats, utilisez mysql_bind_results() pour lier le tampon à l'instruction.
Regardez le code spécifiquement :
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <dlfcn.h> #include <mysql/mysql.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <errno.h> #include <termios.h> #include <mysql/mysql.h> int main() { int ret = 0, status = 0; MYSQL *mysql; MYSQL_RES *result; mysql =mysql_init(NULL); mysql =mysql_real_connect(mysql, "localhost", "root", "123456", "mydb2", 0, NULL, CLIENT_MULTI_STATEMENTS ); if (mysql == NULL) { ret = mysql_errno(mysql); printf("%s", mysql_error(mysql)); printf("func mysql_real_connect() err :%d\n", ret); return ret; } else { printf(" ok......\n"); } MYSQL_TIME ts; MYSQL_BIND bind[3]; MYSQL_STMT *stmt; //注意: // 创建的表语句 // create table test_table (date_field date, time_field time, timestamp_field timestamp ); char query[1024] = "INSERT INTO test_table(date_field, time_field, timestamp_field) VALUES(?,?,?)"; stmt = mysql_stmt_init(mysql); if (!stmt) { fprintf(stderr, " mysql_stmt_init(), out of memory\n"); exit(0); } if (mysql_stmt_prepare(stmt, query, strlen(query))) { fprintf(stderr, "\n mysql_stmt_prepare(), INSERT failed"); fprintf(stderr, "\n %s", mysql_stmt_error(stmt)); exit(0); } /* set up input buffers for all 3 parameters */ bind[0].buffer_type= MYSQL_TYPE_DATE; bind[0].buffer= (char *)&ts; bind[0].is_null= 0; bind[0].length= 0; // bind[1]= bind[2]= bind[0]; //... mysql_stmt_bind_param(stmt, bind); /* supply the data to be sent in the ts structure */ ts.year= 2002; ts.month= 02; ts.day= 03; ts.hour= 10; ts.minute= 45; ts.second= 20; mysql_stmt_execute(stmt); // Close the statement // if (mysql_stmt_close(stmt)) { fprintf(stderr, " failed while closing the statement\n"); fprintf(stderr, " %s\n", mysql_stmt_error(stmt)); exit(0); } mysql_close(mysql); }
Ce qui précède est le contenu des fonctions liées au temps pour démarrer avec MySQL. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois. (www.php.cn) !