Home  >  Article  >  Database  >  Time-related functions for getting started with MySQL

Time-related functions for getting started with MySQL

黄舟
黄舟Original
2017-01-19 15:46:171152browse

The binary protocol allows you to send and receive date and time values ​​(DATE, TIME, DATETIME and TIMESTAMP) using the MYSQL_TIME structure. The members of this structure are described in Section 25.2.5, “Data Types for C API Prepared Statements”.

To send temporary data values, you can use mysql_stmt_prepare() to create a prepared statement. Then, before calling mysql_stmt_execute() to execute the statement, you can use the following steps to set each temporary parameter:

In the MYSQL_BIND structure related to the data value, set the buffer_type member to the corresponding type, which specifies The type of temporary value sent. For DATE, TIME, DATETIME, or TIMESTAMP values, set buffer_type to MYSQL_TYPE_DATE, MYSQL_TYPE_TIME, MYSQL_TYPE_DATETIME, or MYSQL_TYPE_TIMESTAMP respectively.

Set the buffer member of the MYSQL_BIND structure to the address of the MYSQL_TIME structure used to pass temporary values.

Fill the members of the MYSQL_TIME structure to match the type of temporary support intended to be passed.

Use mysql_stmt_bind_param() to bind parameter data to the statement. Mysql_stmt_execute() can then be called.

To retrieve a temporary value, follow similar steps, but set the buffer_type member to the type of value you intend to accept, and set the buffer member to the address of the MYSQL_TIME structure into which the return value should be placed. . After calling mysql_stmt_execute() and before getting the results, use mysql_bind_results() to bind the buffer to the statement.

Look at the code specifically:

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

The above is the content of time-related functions for getting started with MySQL. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn