винда, visual studio 6 PHP: #include <stdio.h> #include <stdlib.h> #include "mysql.h" MYSQL mysql; MYSQL_RES *res; MYSQL_ROW row; void exiterr(int exitcode) { fprintf(stderr, "%s\n", mysql_error(&mysql)); exit(exitcode); } int main() { uint i = 0; if (!(mysql_connect(&mysql,"host","username","password"))) exiterr(1); if (mysql_select_db(&mysql,"payroll")) exiterr(2); if (mysql_query(&mysql,"SELECT name,rate FROM emp_master")) exiterr(3); if (!(res = mysql_store_result(&mysql))) exiterr(4); while((row = mysql_fetch_row(res))) { for (i=0 ; i < mysql_num_fields(res); i++) printf("%s\n",row[i]); } if (!mysql_eof(res)) exiterr(5); mysql_free_result(res); mysql_close(&mysql); } PHP: --------------------Configuration: db2 - Win32 Debug-------------------- Compiling... main.cpp c:\cpp\db2\mysql_com.h(175) : error C2146: syntax error : missing ';' before identifier 'fd' c:\cpp\db2\mysql_com.h(175) : error C2501: 'SOCKET' : missing storage-class or type specifiers c:\cpp\db2\mysql_com.h(175) : error C2501: 'fd' : missing storage-class or type specifiers c:\cpp\db2\mysql_com.h(339) : error C2065: 'SOCKET' : undeclared identifier c:\cpp\db2\mysql_com.h(339) : error C2146: syntax error : missing ')' before identifier 's' c:\cpp\db2\mysql_com.h(340) : error C2059: syntax error : ')' c:\cpp\db2\main.cpp(19) : error C2065: 'mysql_connect' : undeclared identifier Error executing cl.exe. в чем может быть основная проблема? mysql api может быть ориентировано на линукс?
У тебя же чётко всё написано: пропущен символ ";", ")" и т.д. и номер строки указан. Открой библиотеку и посмотри. По возможности исправь.
Дикс, во-первых, ты на винде, чтобы нормально можно было работать в консоли под винды обязательно нужно включить windows.h - именно тут идут определения сложных типов данных таких, как SOCKET и т.д. Это тебя избавит от ряда ошибок. Во-вторых, нужно обязательно прилинковать libmysql.lib к проектy. В-третьих - mysql_connect уже нельзя использовать... Это только пережиток семплов... Девелоперы её запретили как устаревшую, есть альтернатива - mysql_real_connect. Давай пробуй... Ниже линк на мой проект под VS 6.0 - тут всё компилится. http://groundhog.ru/mysql.rar Code: #pragma comment(lib,"libmysql.lib") #include <stdio.h> #include <stdlib.h> #include <windows.h> #include "mysql.h" MYSQL mysql; MYSQL_RES *res; MYSQL_ROW row; void exiterr (int exitcode) { fprintf(stderr, "%s\n", mysql_error(&mysql)); exit(exitcode); } int main () { unsigned int i = 0; mysql_init(&mysql); if (!mysql_real_connect(&mysql, "localhost", "root", "!root!", "test", 0, NULL, 0)) exiterr(1); if (mysql_query(&mysql, "SELECT name,rate FROM emp_master")) exiterr(3); if (!(res = mysql_store_result(&mysql))) exiterr(4); while((row = mysql_fetch_row(res))) for (i=0 ; i < mysql_num_fields(res); i++) printf("%s\n", row[i]); if (!mysql_eof(res)) exiterr(5); mysql_free_result(res); mysql_close(&mysql); return 0; } Да! И не забывай про http://phpclub.ru/mysql/doc/c-api-functions.html, всё равно ты не напишешь сходу приложения для работы с мусклом не глядя в шпаргалку...
наконец-то заработало! сначала исправил свой пример, а затем начал использовать вышеуказанный. *череда поросячьего визга* *ушол писать поисковик
читаю тут доки. получается нет смысла запускать mysql_eof() как в примере groundhog - ведь всё уже выбрано с помощью mysql_store_result() тока мне непонятно - че выбрано? если потом приходится в цикле выбирать из res с помощью mysql_fetch_row() что такое res?