Запрос SET @t=NOW(); INSERT INTO tests(posted) VALUES(@t);
из кода C ++ (libmysqlclient) приводит к следующему сообщению:
В синтаксисе SQL произошла ошибка; обратитесь к руководству, соответствующему вашей версии сервера MariaDB, чтобы узнать правильный синтаксис для использования рядом с «INSERT INTO tests (posts) VALUES (@t)» в строке 1
Но запрос работает нормально с консоли или Heidi SQL.
Таблица «тесты»:
'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;
}
Функция «Запрос»
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);
}
Почему `libmysqlclient не может обработать этот запрос?