database_start("rick", "secret");
ΠΠ°Π»Π΅Π΅ ΡΠ΅ΡΡΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ°:
res = add_cd("Mahler", "Symphony No 1", "4596102", &cd_id);
printf("Result of adding a cd was %d, cd_id is %d\n", res, cd_id);
memset(&ct, 0, sizeof(ct));
ct.cd_id = cd_id;
strcpy(ct.track[0], "Langsam Schleppend");
strcpy(ct.track[1], "Kraftig bewegt");
strcpy(ct.track[2], "Feierlich und gemessen");
strcpy(ct.track[3], "StΓΌrmisch bewegt");
add_tracks(set);
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΠΈΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ CD:
res = find_cds("Symphony", &cd_res);
printf("Found %d cds, first has ID %d\n", res, cd_res.cd_id[0]);
res = get_cd(cd_res.cd_id[0], &cd);
printf("get_cd returned %d\n", res);
memset(&ct, 0, sizeof(ct));
res = get_cd_tracks(cd_res.cd_id[0], set);
printf("get_cd_tracks returned %d\n", res);
printf("Title: %s\n", cd.title);
i = 0;
while (i < res) {
printf("\ttrack %d is %s\n", i, ct.track[i]);
i++;
}
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΄Π°Π»ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊ:
res = delete_cd(cd_res.cd_id[0]);
printf("Delete_cd returned %d\n", res);
ΠΠ°ΡΠ΅ΠΌ ΠΎΡΠΊΠ»ΡΡΠΈΡΠ΅ΡΡ ΠΈ Π·Π°Π²Π΅ΡΡΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
database_end();
return EXIT_SUCCESS;
}
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°Π’Π΅ΠΏΠ΅ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΄Π½Π°Ρ ΡΠ°ΡΡΡ β ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ. ΠΡΡ ΠΎΠ½Π° Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ app_mysql.Ρ.
ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² include, Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ, ΠΈ ΡΠ»Π°Π³Π° dbconnected, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΠΏΡΡΠ°Π»ΠΈΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ, Π΅ΡΠ»ΠΈ Ρ Π½ΠΈΡ Π½Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ get_artist_id, Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "mysql.h"
#include "app_mysql.h"
static MYSQL my_connection;
static int dbconnected = 0;
static int get_artist_id(char *artist);
ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ ΡΠ°Π½Π΅Π΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ, Π° ΠΎΡΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΎΡ Π½Π΅Π΅ ΠΈ ΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅:
int database_start(char *name, char *pwd) {
if (dbconnected) return 1;
mysql_init(&my_connection);
if (!mysql_real_connect(&my_connection, "localhost",
name, pwd, "blpcd", 0, NULL, 0)) {
fprintf(stderr, "Database connection failure: %d, %s\n",
mysql_errno(&my_connection), mysql_error(&my_connection));
return 0;
}
dbconnected = 1;
return 1;
} /* database_start */
void database_end() {
if (dbconnected) mysql_close(&my_connection);
dbconnected = 0;
} /* database_end */
ΠΠ°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠ΅Π°Π»ΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ add_cd. ΠΠ°ΠΌ Π½ΡΠΆΠ½Ρ ΡΠ½Π°ΡΠ°Π»Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΈ ΡΠ°Π½ΠΈΡΠ°ΡΠ½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, Π§ΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² Π½Π°Π»ΠΈΡΠΈΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π΅Π΅ Π²ΠΎ Π²ΡΠ΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡΡ , Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΈΠ·Π²Π½Π΅.
ΠΠ°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π° ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π΅ΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ:
int add_cd(char *artist, char *title, char* catalogue, int *cd_id) {
MYSQL_RES *res_ptr;
MYSQL_ROW mysqlrow;
int res;
char is[250];
char es[250];
int artist_id = -1;
int new_cd_id = -1;
if (!dbconnected) return 0;
ΠΠ°Π»Π΅Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ, Π΅ΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΅Π³ΠΎ. ΠΠ±ΠΎ Π²ΡΠ΅ΠΌ ΡΡΠΎΠΌ Π·Π°Π±ΠΎΡΠΈΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ get_artist_id, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΡΠΊΠΎΡΠΎ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅:
artist_id = get_artist_id(artist);
Π’Π΅ΠΏΠ΅ΡΡ, ΠΈΠΌΠ΅Ρ artist_id, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΡΠ°Π²Π»ΡΡΡ Π³Π»Π°Π²Π½ΡΡ Π·Π°ΠΏΠΈΡΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ°. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ mysql_escape_string, Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡΠ΅ΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ°.
mysql_escape_string(es, title, strlen(title));
sprintf(is,
"INSERT INTO cd(title, artist_id, catalogue) VALUES('%s', %d, '%s')",
es, artist_id, catalogue);
res = mysql_query(&my_connection, is);
if (res) {
fprintf(stderr, "Insert error %d: %s\n",
mysql_errno(&my_connection), mysql_error(&my_connection));
return 0;
}
ΠΠΎΠ³Π΄Π° Π²Ρ Π΄ΠΎΠΉΠ΄Π΅ΡΠ΅ Π΄ΠΎ Π²ΡΡΠ°Π²ΠΊΠΈ Π΄ΠΎΡΠΎΠΆΠ΅ΠΊ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ°, Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π½Π°ΡΡ ID, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΠΏΡΠΈ Π²ΡΡΠ°Π²ΠΊΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅. ΠΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΏΠΎΠ»Π΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°ΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»Π° ID, Π½ΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΠΈΠ·Π²Π»Π΅ΡΡ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΡΠ°Π½Π΅Π΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅, ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ LAST_INSERT_ID.
res = mysql_query(&my_connection, "SELECT LAST_INSERT_ID()");
if (res) {
printf("SELECT error: %s\n", mysql_error(&my_connection));
return 0;
} else {
res_ptr = mysql_use_result(&my_connection);
if (res_ptr) {
if ((mysqlrow = mysql_fetch_row(res_ptr))) {
sscanf(mysqlrow[0], "%d", &new_cd_id);
}
mysql_free_result(res_ptr);
}
He ΡΡΠΎΠΈΡ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ -ΠΊΠ»ΠΈΠ΅Π½ΡΠ°Ρ , Π²ΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΈ Π² ΡΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΈ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΠΏΡΡΠ°Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΡ Π½ΠΎΠΌΠ΅ΡΠΎΠ² ID; Π‘Π£Π ΠΠ MySQL Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Π½ΡΠΉ ID Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΡΠ°Π²ΠΈΠ»ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊ ΠΏΡΠ΅ΠΆΠ΄Π΅, ΡΠ΅ΠΌ Π²Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ»ΠΈ ID, Π²Ρ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π½ΠΎΠΌΠ΅Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π²Π°ΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠ΅, Π° Π½Π΅ ΡΡΡΠΎΠΊΠ΅, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΉ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅, Π½ΠΎ Π½Π΅ ΠΏΠΎ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π²Π°ΠΆΠ½ΠΎΡΡΠΈ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ID Π²Π½ΠΎΠ²Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ΄ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ:
*cd_id = new_cd_id;
if (new_cd_id != -1) return 1;
return 0;
}
} /* add_cd */
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ get_artist_id; ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π° Π²ΡΡΠ°Π²ΠΊΡ Π·Π°ΠΏΠΈΡΠΈ ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅:
/* ΠΠΎΠΈΡΠΊ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ artist_id Π΄Π»Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ */
static int get_artist_id(char *artist) {
MYSQL_RES *res_ptr;
MYSQL_ROW mysqlrow;
int res;
char qs[250];
char is[250];
char es[250];
int artist_id = -1;
/* ΠΠ½ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ? */
mysql_escape string(es, artist, strlen(artist));
sprintf(qs, "SELECT id FROM artist WHERE name = '%s'", es);
res = mysql_query(&my_connection, qs);
if (res) {
fprintf(stderr, "SELECT error: %s\n", mysql_error(&my_connection));
} else {
res_ptr = mysql_store_result(&my_connection);
if (res_ptr) {
if (mysqr_num_rows(res_ptr) > 0) {
if (mysqlrow = mysql_fetch_row(res_ptr)) {
sscanf(mysqlrow[0], "%d", &artist_id);
}
}
mysql_free_result(res_ptr);
}
}
if (artist_id != -1) return artist_id;
sprintf(is, "INSERT INTO artist(name) VALUES ('%s')", es);
res = mysql_query(&my_connection, is);
if (res) {
fprintf(stderr, "Insert error %d: %s\n",
mysql_errno(&my_connection), mysql_error(&my_connection));
return 0;
}
res = mysql_query(&my_connection, "SELECT LAST_INSERT_ID()");
if (res) {
printf("SELECT error: %s\n", mysql_error(&my_connection));
return 0;
} else {
res_ptr = mysql_use_result(&my_connection);
if (res_ptr) {
if ((mysqlrow = mysql_fetch_row(res_ptr))) {
sscanf(mysqlrow[0], "%d", &artist_id);
}
mysql_free_result(res_ptr);
}
}
return artist_id;
} /* get_artist_id */
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΊ Π²ΡΡΠ°Π²ΠΊΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π΄ΠΎΡΠΎΠΆΠΊΠ°Ρ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ°. Π ΡΠ½ΠΎΠ²Π° Π·Π°ΡΠΈΡΠΈΡΠ΅ΡΡ ΠΎΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² Π½Π°Π·Π²Π°Π½ΠΈΡΡ Π΄ΠΎΡΠΎΠΆΠ΅ΠΊ:
int add_tracks(struct current_tracks_st *tracks) {
int res;
char is[250];
char es[250];
int i;
if (!dbconnected) return 0;
i = 0;
while (tracks->track[i][0]) {
mysql_escape_string(es, tracks->track[i], strlen(tracks->track[i]));
sprintf(is,
"INSERT INTO track(cd_id, track_id, title) VALUES(%d, %d, '%s')",
tracks->cd_id, i + 1, es);
res = mysql_query(&my_connection, is);
if (res) {
fprintf(stderr, "Insert error %d: %s\n",
mysql_errno(&my_connection), mysql_error(&my_connection));
return 0;
}
i++;
}
return 1;
} /* add tracks */
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΊ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΅Π³ΠΎ ID. ΠΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ID ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΎΠ± ID Π΄ΠΈΡΠΊΠ°. ΠΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄: ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ ΠΎΡΠ»ΠΈΡΠ½ΠΎ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π‘Π£Π ΠΠ, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π΅ΠΉ Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΠ·ΡΠΊΠ΅ SQL. ΠΡΡΡ ΡΠ°Π½Ρ ΡΠ±Π΅ΡΠ΅ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΈΠ»Ρ, Π½Π΅ ΡΡΠ°ΡΡ ΠΈΡ Π½Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, ΡΠ°Π·ΡΠ΅ΡΠΈΠ² Π‘Π£Π ΠΠ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ.
int get_cd(int cd_id, struct current_cd_st *dest) {
MYSQL_RES *res_ptr;
MYSQL_ROW mysqlrow;
int res;
char qs[250];
if (!dbconnected) return 0;
memset(dest, 0, sizeof(*dest));
dest->artist_id = -1;
sprintf(qs, "SELECT artist.id, cd.id, artist.name, cd.title, cd.catalogue \
FROM artist, cd WHERE artist.id = cd.artist_id and cd.id = %d", cd_id);
res = mysql_query(&my_cormection, qs);