Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

28.01.2009, 18:02
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
не компилируется mysql.h
винда, 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 может быть ориентировано на линукс?
Последний раз редактировалось Дикс; 28.01.2009 в 18:05..
|
|
|

28.01.2009, 18:13
|
|
Участник форума
Регистрация: 07.01.2009
Сообщений: 237
Провел на форуме: 745649
Репутация:
97
|
|
У тебя же чётко всё написано: пропущен символ ";", ")" и т.д. и номер строки указан. Открой библиотеку и посмотри. По возможности исправь.
|
|
|

28.01.2009, 18:15
|
|
Members of Antichat - Level 5
Регистрация: 09.05.2008
Сообщений: 304
Провел на форуме: 7875940
Репутация:
2362
|
|
Подключи winsock2.h
Не уверен, но возможно.
|
|
|

28.01.2009, 18:42
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Дикс, во-первых, ты на винде, чтобы нормально можно было работать в консоли под винды обязательно нужно включить windows.h - именно тут идут определения сложных типов данных таких, как SOCKET и т.д. Это тебя избавит от ряда ошибок. Во-вторых, нужно обязательно прилинковать libmysql.lib к проектy. В-третьих - mysql_connect уже нельзя использовать... Это только пережиток семплов... Девелоперы её запретили как устаревшую, есть альтернатива - mysql_real_connect. Давай пробуй... Ниже линк на мой проект под VS 6.0 - тут всё компилится.
http://groundhog.ru/mysql.rar
Код:
#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, всё равно ты не напишешь сходу приложения для работы с мусклом не глядя в шпаргалку...
|
|
|

28.01.2009, 20:31
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
наконец-то заработало!
сначала исправил свой пример, а затем начал использовать вышеуказанный.
*череда поросячьего визга*
*ушол писать поисковик
|
|
|

28.01.2009, 20:42
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Удачки
|
|
|

28.01.2009, 22:01
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
При использовании совместно с mysql_store_result() функция mysql_eof() всегда будет возвращать TRUE.
читаю тут доки.
получается нет смысла запускать mysql_eof() как в примере groundhog - ведь всё уже выбрано с помощью mysql_store_result()
тока мне непонятно - че выбрано? если потом приходится в цикле выбирать из res с помощью mysql_fetch_row()
что такое res?
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|