Error al utilizar las variables definidas por el usuario en consulta MySQL vía libmysqlclient

Iceman:

La consulta SET @t=NOW(); INSERT INTO tests(posted) VALUES(@t);de código da como resultado C ++ (libmysqlclient) en el mensaje siguiente:

Usted tiene un error en su sintaxis SQL; compruebe el manual que corresponde a su versión del servidor MariaDB para la sintaxis derecho al uso cerca de 'pruebas INSERT INTO (Realizado) VALUES (@t)' en la línea 1

Sin embargo, la consulta funciona bien desde la consola o HeidiSQL.

Tabla "pruebas":
'id' int(10) unsigned NOT NULL AUTO_INCREMENT, 'posted' datetime NOT NULL, PRIMARY KEY ('id')

main.cpp

#include <cstdio>
#include "sqldb.h"

int main(int argc, char** argv) {
    MySQLClient DB;

    if (!DB.Connect("192.168.1.254", "test", "testpass")) {
        printf("MySQL: %s\n", DB.Error());
        return 1;
    }
    if (!DB.UseDB("test")) {
        printf("MySQL: %s\n", DB.Error());
        return 2;
    }
    if (!DB.Query("SET @t=NOW(); INSERT INTO tests(posted) VALUES(@t);")) {
        printf("MySQL: %s\n", DB.Error());
        return 3;
    }
    return 0;
}

La función "Consulta"

bool MySQLClient::Query(const char * statement) {
    if (!ctx || !statement) return false;
    unsigned long length = 0;
    while(statement[length]) ++length;
    return !mysql_real_query(static_cast<MYSQL*>(ctx), statement, length);
}

¿Por qué `libmysqlclient no puede procesar esta consulta?

rua.kr:

CLIENT_MULTI_STATEMENTS permite a mysql_query () y mysql_real_query () para ejecutar series de sentencia que contienen múltiples sentencias separadas por punto y coma.

    mysql_real_connect(mysql, server, username, password, db, 0, NULL, CLIENT_MULTI_STATEMENTS);

varias consultas con mysql_query en un proyecto de C ++

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=284051&siteId=1
Recomendado
Clasificación