Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    connettersi a 3 database contemporaneamente

    ciao a tutti, nel mio sito ho impostato 3 differenti database per utenti, elementi e contenuti, per ogni database ho fatto una connessione a se, anche se si trovano tutti nella stessa root, c'è un modo per fare una connessione multipla? cosi il codice sarebbe molto più pulito oltre che funzionale, inoltre poi farei meno confusione con le query, io ora ho questo:

    codice:
    <?php
    $connuser=mysql_connect ( "localhost", "root", "");
    
    if (!$connuser) (die ("Connessione al database fallita, contatta l'amministratore del sito per segnalare il problema") . mysql_error ());
    
    $dbuser=mysql_select_db ("user" , $connuser);
    
    if (!$dbuser) (die ("Connessione al database fallita") . mysql_error ()); 
    ?>
    una connessione cosi per tre database, dove cambia solo il campo del nome database e il nome delle variabili...

  2. #2
    credo che il primo errore sia nel costruire tre database per lo stesso progetto.

    Qualunque progetto per grande che sia se i dati sono omogenei e appartenenti allo stesso progetto e' sacrosanto siano nello stesso database. Puoi cambiare il database nel caso in cui i dati costituiscano un complesso di valori estranei al progetto base, cioe' un altro programma in altr parole.

    La diversita' dei dati di un progetto e' sancita dal nome delle tabelle e dai campi relativi e non da piu' database.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Comunque non esiste un modo per fare una "connessione multipla" con una sola riga di codice...
    puoi pulire leggermente quello che hai gia:

    Codice PHP:
    <?php
    $connuser
    =mysql_connect "localhost""root""") or (die ("Connessione al database fallita, contatta l'amministratore del sito per segnalare il problema") . mysql_error ());

    $dbuser=mysql_select_db ("user" $connuser) or (die ("selezione database fallita") . mysql_error ()); 
    ?>

  4. #4
    il fatto è che con il mio servizio di hosting ho 5 database da 100mb l'uno e volevo sfruttarli tutti senza il rischio di riempirne uno e basta, siccome nei database ci vanno dati a volte anche abbastanza pesanti quella di suddividere le cose in 3 database mi è sembrata una buona soluzione, ora il sito è completo al 50% e fino ad ora in termini di query, gestione etc etc non ho avuto problemi...se non esiste un modo connettersi a tutti e tre contemporaneamente, almeno un modo per dichiarare una sola variabile di connessione per tutti si può fare?

  5. #5
    Originariamente inviato da giorda86
    il fatto è che con il mio servizio di hosting ho 5 database da 100mb l'uno e volevo sfruttarli tutti senza il rischio di riempirne uno e basta, siccome nei database ci vanno dati a volte anche abbastanza pesanti quella di suddividere le cose in 3 database mi è sembrata una buona soluzione, ora il sito è completo al 50% e fino ad ora in termini di query, gestione etc etc non ho avuto problemi...se non esiste un modo connettersi a tutti e tre contemporaneamente, almeno un modo per dichiarare una sola variabile di connessione per tutti si può fare?
    La connessione che esegui con mysql_connect sara' una sola, ma poi dovrai richiamare il database che ti serve con mysql_select_db che coorisponde poi al comando "use db" in sql.

    Se le autorizzazioni del client lo permettono puoi connetterti ad un db e poi da questo db eseguire le query su db altro ma richiamando anche il database senza dover saltare da un db all'altro.

    es:
    mysql_select_db($db1);

    select table.campo from $db2.table

    Vale anche se non ti connetti ad alcun db. 100mb di dati su db sono comunque tanti se non usi campi BLOB. i file di qualunque tipo lasciali nelle cartelle e metti nel db il solo path. I 5 db penso abbiano lo scopo di permettere di avere 5 siti diversi oppure 5 diverse applicazioni autonome tra di loro.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Originariamente inviato da giorda86
    il fatto è che con il mio servizio di hosting ho 5 database da 100mb l'uno e volevo sfruttarli tutti senza il rischio di riempirne uno e basta, siccome nei database ci vanno dati a volte anche abbastanza pesanti quella di suddividere le cose in 3 database mi è sembrata una buona soluzione, ora il sito è completo al 50% e fino ad ora in termini di query, gestione etc etc non ho avuto problemi...se non esiste un modo connettersi a tutti e tre contemporaneamente, almeno un modo per dichiarare una sola variabile di connessione per tutti si può fare?
    Sicuro di avere 100MB per ogni DB e non 100MB da condividere tra tutti i 5 possibili DB che puoi creare? Controlla bene, non darlo per scontato.
    Altra cosa, i dati pesanti che il db deve contenere cosa sono?
    Di solito i file, come ad esempio le immagini, non si mettono nel db, ma si mettono in una cartella e nel db ci si mette solo il percorso di dove si trova il file.

  7. #7
    no no. sono 5 database mysql con dimensioni massime 100mb per ogni database... io ho fatto questo anche per separare le cose, mi spiego meglio: nel database "utenti" ci sono tutti campi che riguardano username, password, mail, i messaggi tra utentii, il forum, i commenti del guestbook tc etc...insomma tutte le cose accessibili dagli utenti.
    in un'altro ci sono , le recensioni che inserisco (tutte mediumtext e longtext), le news e i link alle immagini degli articoli (i link e non le immagini), insomma tutte le cose accessibili e modificabili da pannello admin. e nell'altro solo i controllo.
    mentre l'altro è riservato a votazioni, sondaggi, contatori e altre varie applicazioni...
    ho fatto questo perchè separare le cose mi sembrava molto funzionale in termini di organizzazione del database e di spazio, ma come ho già detto mi piacerebbe usare un solo file di connessione al posto di tre, mi basterebbe capire come posso fare a sfruttare una sola connessione, mi rivolgo a piero.mac, mi potresti portare un esempio di uno script php per fare quello che dici tu? con una sola connessione e tre db selezionati... una domanda poi... nelle query poi che variabile specifico?

  8. #8
    La connessione sara' una soltanto. Ti connetti ad un server non ad un database.

    Poi tramite la connessione stabilita selezioni il database ed esegui le tue query. Le query ricevute dal server vengono eseguite in modo seriale, cioe' una dopo l'altra e mai contemporaneamente con la stessa sequenza che le avrai elencate nello script.

    Hai quindi una prima possibilita': se il database interessato e' specifico di un gruppo di script allora sceglierai il database relativo. Se invece devi utilizzare diversi database nello stesso script allora dovrai cambiare di volta in volta la scelta del db, oppure nel caso di dover eseguire una query che interessa contemporaneamente piu' database dovrai semplicemente anteporre il nome del database a quello della tabella. Un esempio (gia' postato prima)

    Codice PHP:
    $db1 'ciccio';
    $db2 'pippo';
    $db3 'pallo';

    mysql_connect.....

    mysql_query("select * from $db1.tab1
                         inner join 
    $db2.tab1 ON .......
                         inner join 
    $db3.tab1 ON ....
    /// ecc.... 
    In questo modo puoi selezionare 3 diversi db nella stessa query.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.