Program łączy się z bazą danych MySQL na serwerze Linux (Debian) a następnie pobiera dane z tabeli i wypisuje na ekranie w postaci strony HTML (można uruchamiać jako skrypt CGI w katalogu /cgi-bin).
Wymagania: zainstalowane g++ (może być gcc po usunięciu strumieni io) oraz bilioteka libmysqlclient15-dev
1 | apt-get install libmysqlclient15-dev |
Program kompilujemy na Linuxie poleceniem
1 | g++ programcgi.c -o /var/www/cgi-bin/mysql.cgi -lmysqlclient |
a uruchamiamy z przegladarki
1 | http://adresserwera/cgi-bin/mysql.cgi?parametr1=jakaswartosc |
Bez Apache można uruchomić program po skompilowaniu wysyłając wynik do pliku html a następnie otworzyć go przeglądarką
1 | ./mysql.cgi > wynik.html |
Kod C++:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #include<iostream> #include<stdlib.h> #include<mysql/mysql.h> using namespace std; int main() { cout << "ContentType:text/html;charset=UTF-8" << (char)13 << (char)10 << "\n<HTML>" << "<head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" ></head>" << "<TITLE>Zmienne środowiskowe</TITLE>\n" << "<BODY><h1>Hello, jestem skryptem CGI</h1></BODY>\n" << "parametry skryptu: " << getenv("QUERY_STRING") << "\n"; MYSQL *conn; conn = mysql_init(NULL); MYSQL_RES *res; MYSQL_ROW row; //sprawdzenie czy jest biblioteka w systemie: if (!conn) { cout << "Nie połączono z MySQL\n"; exit(1); } //proba polaczenia z baza conn = mysql_real_connect (conn, "server_sql", "user", "haslo_sql", "baza_sql", 0, NULL, 0); if (conn) { cout << "Połączono z bazą MySQL\n"; } else { cout << "Nieprawidłowy użytkownik, hasło, serwer lub baza\n"; } //wywolanie zapytania SQL: if (mysql_query(conn, "SELECT * FROM tabela")) cout << mysql_error(conn); //wypisanie tabeli wynikowej w tabelce cout <<"<TABLE border="1">\n"; res = mysql_use_result(conn); while ((row = mysql_fetch_row(res)) != NULL) cout<< "<tr><td>" << row[0] << "</td></tr>\n"; //zamkniecie polaczenia: mysql_close(conn); cout <<"</TABLE></HTML>"; return 0; } |