Heim  >  Artikel  >  Datenbank  >  Zeitbezogene Funktionen für den Einstieg in MySQL

Zeitbezogene Funktionen für den Einstieg in MySQL

黄舟
黄舟Original
2017-01-19 15:46:171196Durchsuche

Mit dem Binärprotokoll können Sie Datums- und Uhrzeitwerte (DATE, TIME, DATETIME und TIMESTAMP) mithilfe der MYSQL_TIME-Struktur senden und empfangen. Die Mitglieder dieser Struktur werden in Abschnitt 25.2.5, „Datentypen für vorbereitete C-API-Anweisungen“ beschrieben.

Um temporäre Datenwerte zu senden, können Sie mysql_stmt_prepare() verwenden, um vorbereitete Anweisungen zu erstellen. Bevor Sie dann mysql_stmt_execute() aufrufen, um die Anweisung auszuführen, können Sie die folgenden Schritte verwenden, um jeden temporären Parameter festzulegen:

Setzen Sie in der MYSQL_BIND-Struktur, die dem Datenwert zugeordnet ist, das buffer_type-Mitglied auf den entsprechenden Typ Gibt den Typ des gesendeten temporären Werts an. Setzen Sie für DATE-, TIME-, DATETIME- oder TIMESTAMP-Werte buffer_type auf MYSQL_TYPE_DATE, MYSQL_TYPE_TIME, MYSQL_TYPE_DATETIME bzw. MYSQL_TYPE_TIMESTAMP.

Setzen Sie das Puffermitglied der MYSQL_BIND-Struktur auf die Adresse der MYSQL_TIME-Struktur, die zur Übergabe temporärer Werte verwendet wird.

Füllen Sie die Mitglieder der MYSQL_TIME-Struktur so aus, dass sie dem Typ der temporären Unterstützung entsprechen, die übergeben werden soll.

Verwenden Sie mysql_stmt_bind_param(), um Parameterdaten an eine Anweisung zu binden. Anschließend kann Mysql_stmt_execute() aufgerufen werden.

Um einen temporären Wert abzurufen, führen Sie ähnliche Schritte aus, aber setzen Sie das buffer_type-Mitglied auf den Typ des Werts, den Sie akzeptieren möchten, und setzen Sie das buffer-Mitglied auf die Adresse der MYSQL_TIME-Struktur, in die der Rückgabewert aufgenommen werden soll platziert werden. Verwenden Sie nach dem Aufruf von mysql_stmt_execute() und vor dem Abrufen der Ergebnisse mysql_bind_results(), um den Puffer an die Anweisung zu binden.

Sehen Sie sich den Code genau an:

#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);
}

Das Obige ist der Inhalt zeitbezogener Funktionen für den Einstieg in MySQL. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn