LINUX.ORG.RU

Ошибка при двойном запросе в MySQL в Си

 


0

2

Добрый день. Столкнулся с проблемой следующего характера: Есть код: Выделить всёкод C++ char sql_query[2048]; sprintf(sql_query, «SELECT @s_id:=sender_id FROM `data` WHERE `status`=1 ORDER BY `created` ASC LIMIT 1; » \ «SELECT * FROM `data` WHERE `sender_id`=@s_id ORDER BY `created`;»); if ( mysql_query(conn, sql_query) == 0 ) { _Log.write(nLOG_INFO, «I feel good!»); } else { char err_text[1024]; sprintf(err_text, «Error MYSQL query: %s», mysql_error(conn)); _Log.write(nLOG_ERROR, err_text); return -1; }

но компилятор ругается следующими матерными словами: Выделить всёкод C++ 1: Error MYSQL query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT * FROM `data` WHERE `sender_id`=@s_id ORDER BY `created`' at line 1

при попытке выполнить данный запрос в интерфейсе PHPMyAdmin - все пучком!

По отдельности SELEC`ты выполняются без проблем в Си.

О среде: Linux mint Eclipse C/C++

Цель запроса получить все записи из таблицы, у которых sender_id = <sender_id первой строки результата запроса>

Помогите люди добрый пожалуйста!

«SELECT ...» \ «SELECT»

Зачем там » \ «? Скорее всего, должно быть без, но в ответе от сервера будет два набора данных после того как вычитаешь первый recordset нужно переключиться на следующий и считывать уже его.

kostik87 ★★★★★ ()

Есть код: Выделить всёкод C++ char sql_query[2048]; sprintf(sql_query, «SELECT @s_id:=sender_id FROM `data` WHERE `status`=1 ORDER BY `created` ASC LIMIT 1; » \ «SELECT * FROM `data` WHERE `sender_id`=@s_id ORDER BY `created`;»); if ( mysql_query(conn, sql_query) == 0 ) { _Log.write(nLOG_INFO, «I feel good!»); } else { char err_text[1024]; sprintf(err_text, «Error MYSQL query: %s», mysql_error(conn)); _Log.write(nLOG_ERROR, err_text); return -1; }

Выделить всёкод C++

Цель запроса получить все записи из таблицы, у которых sender_id = <sender_id первой строки результата запроса>

Что это за дичь? Такой запрос не сработает?

SELECT *
  FROM `data`
 WHERE `status` = 1
 ORDER BY `created` ASC
 LIMIT 1;
theNamelessOne ★★★★★ ()
Последнее исправление: theNamelessOne (всего исправлений: 2)