Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - c++ e mysql: su localhost si su server no :/
Forum - C/C++ - c++ e mysql: su localhost si su server no :/

Avatar
NickoMaiden (Normal User)
Pro


Messaggi: 115
Iscritto: 10/06/2009

Segnala al moderatore
Postato alle 22:37
Lunedì, 05/07/2010
ho voluto provare questo esperimento, ed è andato a buon fine, tranne per una cosa: se il database è su localhost con easyphp fila tutto liscio, provando ad accedere al database del mio account di altervita non ho niente di buono.
ecco il codice

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <iostream>
  4. #include <mysql/mysql.h>
  5.  
  6. const char* host = "localhost"; // host di connessione
  7. const char* database = "prova";  // database di connessione
  8. const char* db_user = "root"; // nome utente per la connessione
  9. const char* db_pass = ""; // password non cifrata
  10.  
  11. using namespace std;
  12.  
  13.  
  14. bool logga_db(MYSQL *mysql);
  15.  
  16. void stampa(MYSQL *mysql);
  17.  
  18. int main()
  19. {
  20.         MYSQL mysql;
  21.        
  22.        
  23.  
  24.         if(logga_db(&mysql))
  25.              return 0;
  26.         stampa(&mysql);
  27.        
  28.        
  29.        
  30.      
  31.  
  32.  
  33.         mysql_close (&mysql);   // chiusura del database
  34.         system("pause");
  35.         return 0;
  36. }
  37. bool logga_db(MYSQL *mysql)
  38.                  {
  39.                  bool errore=false;
  40.         // restituisce NULL se non avviene con successo
  41.         //serve a inizializzare le funzioni successive
  42.                 if (! mysql_init (mysql))
  43.                     {
  44.                     cout<<"Errore nella allocazione di memoria.\n";
  45.                     errore=true;
  46.                     }
  47.  
  48.                 if (! mysql_real_connect (mysql, host, db_user, db_pass, "",0, NULL, 0))
  49.                 {
  50.                 cout<<"Errore nella connessione.\n";
  51.                 errore=true;
  52.                 }
  53.  
  54.         // restituisce zero se avviene con successo
  55.                 if (mysql_select_db (mysql, database))
  56.                 {
  57.                 cout<<"Errore nella selezione del database.\n";
  58.                 errore=true;
  59.                 }
  60.                 return errore;
  61.                  }
  62.                  
  63.                  
  64. void stampa(MYSQL *mysql)
  65.              {
  66.         MYSQL_ROW row;        // la riga
  67.         MYSQL_RES* result;
  68.         MYSQL_FIELD* field;
  69.                  
  70.                  
  71.         char* query = "SELECT * FROM coda;";
  72.                 // esegue la query
  73.         if (mysql_query (mysql, query))
  74.         {
  75.                 cout<<"Errore nella query.\n";
  76.                 system("pause");
  77.                 exit(1);
  78.                
  79.         }    
  80.        
  81.        
  82.        
  83.        
  84.         int i = 0, j = 0, n_rows = 0;
  85.         result = mysql_store_result (mysql);
  86.         n_rows = mysql_num_rows (result);
  87.  for (j = 0; j < n_rows; j++) {
  88.                 i = 0;
  89.                 mysql_field_seek (result, 0);                // sposta a inizio riga
  90.                 row = mysql_fetch_row (result);             // preleva i dati della riga
  91.                 while ((field = mysql_fetch_field (result)))
  92.                 {
  93.            
  94.                         printf ("%s: ", field->name);       // visualizza il campo
  95.                        
  96.                         printf ("%s\n", row[i]);  
  97.                         i++;
  98.                        
  99.                                                             // visualizza il dato del campo
  100.                 }
  101.  
  102.                 printf ("\n");
  103.         }
  104.  
  105.         mysql_free_result (result);
  106.              }



secondo me c'è un problema qui:
Codice sorgente - presumibilmente Delphi

  1. const char* host = "altervista.org"; // host di connessione
  2. const char* database = "my_nomeutente";  // database di connessione
  3. const char* db_user = "nomeutente"; // nome utente per la connessione
  4. const char* db_pass = "miapassword"; // password non cifrata


questo è il modo in cui inizializzo le variabili. per l'host ho provato anche http://altervista.org, nomeutente.altervista.org , http//nomeutente.altervista.org
ma nulla.
qualche dritta?

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 23:56
Lunedì, 05/07/2010

semplicemente ti sfugge che gli hosting NON permettono l'accesso al db da un host all'infuori di quello del server web :)

PM Quote
Avatar
NickoMaiden (Normal User)
Pro


Messaggi: 115
Iscritto: 10/06/2009

Segnala al moderatore
Postato alle 3:54
Martedì, 06/07/2010
Testo quotato

Postato originariamente da HeDo:


semplicemente ti sfugge che gli hosting NON permettono l'accesso al db da un host all'infuori di quello del server web :)




lo sospettavo...
praticamente ho una pagina in php che inserisce dei dati al database mysql, successivamente mi interessa che questi dati vengano letti da un programma in c++...
a questo punto, c'è un modo (qualsiasi, basta che funzioni ) per sbrogliarmi da questa situazione?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 6:53
Martedì, 06/07/2010
Devi fare interagire il tuo programma con una applicazione php che si occupi di accettare comandi e restituire dati. Ma la vedo contorta ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote