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;
}
C, Linux, SQL