Visualizzazione risultati 1 fino 8 di 8

Discussione: [php / Mysql Mssql]

  1. #1
    L'avatar di Guido8975
    Guido8975 non è connesso AlterVistiano
    Data registrazione
    16-10-2002
    Residenza
    Caserta
    Messaggi
    766

    Lightbulb [php / Mysql Mssql]

    Eccomi qui dopo tempO!
    Vi scrivo im merito ad una perplessità riuardante la possibilità di interfacciare un sito php sia con database MySQL che con MSSQL(ovviamente non contemporaneamente).
    inizialmente ho pensato di scrivere una funziona che switcha tra mysql e mssql facendo un return del tipo

    return mysql_fetch...
    oppure
    return mssql_fetch...

    ma mi sono accorto che poi questo return della funzione in un while non produce risultati e neanche errori (si blocca..sembrerebbe un loop infinito).

    Vorrei sapere voi se avete mai avuto questa necessità?
    se si come avete risolto?
    Oppure come risolvereste?

    (la soluzione pacchiana e sostituire tutte le funzioni di mysql con mssql, ma è davvero poco gestibile)

    Grazie a tutti saluti!!

  2. #2
    Guest

    Predefinito

    Dovresti riscrivere tutte le funzioni riguardanti il database, e in ognuna di queste funzioni switchi il tipo di DB.

    Ad esempio, per la query, potresti fare:

    Codice PHP:
    function multi_db_query($q){
    switch(
    $tipo_DB){
    case
    'mysql': return mysql_query($q); break;
    case
    'mssql': return mssql_query($q); break;
    }
    }

    Ciao!

  3. #3
    L'avatar di Guido8975
    Guido8975 non è connesso AlterVistiano
    Data registrazione
    16-10-2002
    Residenza
    Caserta
    Messaggi
    766

    Predefinito

    Ho provato già quasi come dici tu!
    anzi ho provato a fare un return con mysql_fetch ma se lo faccio nel while:

    Codice PHP:
    while($row = multi_db_query()){
    echo
    $row[campo1];
    }
    ottengo una specie di loop infinito!

    CHi mi sa dire il perchè?
    Ultima modifica di Guido8975 : 11-09-2008 alle ore 13.34.38

  4. #4
    Guest

    Predefinito

    Stai facendo un po' di confusione.
    la query ritorna un tipo di risorsa, da trattare poi con un'altra funzione, quella che fetcha.
    La funzione che fetcha dovrà ritornare l'array proprio come fa mysql_fetch_...

    Quindi:
    Codice PHP:
    function multi_db_query($q){
    switch(
    $tipo_DB){
    case
    'mysql': return mysql_query($q); break;
    case
    'mssql': return mssql_query($q); break;
    }
    }

    function
    multi_db_fetch($r){
    switch(
    $tipo_DB){
    case
    'mysql': return mysql_fetch_array($r); break;
    case
    'mssql': return mssql_fetch_array($r); break;
    }
    }

    /* eseguo */
    $q = multi_db_query("SELECT * FROM tabella");

    while(
    $row = multi_db_fetch($q)){
    echo
    $row[0];
    }

    Ciao!

  5. #5
    L'avatar di radioradianti
    radioradianti non è connesso Utente storico
    Data registrazione
    26-11-2003
    Residenza
    Roma
    Messaggi
    1,000

    Predefinito

    Potresti anche usare un Abstraction library come AdoDb

    http://adodb.sourceforge.net/

    Utilizzando questa library riusciresti ad evitare di scrivere più return a seconda del database utilizzato.

    Ciao

    Leandro

    E' on line il numero 12 di Topolinux - Totalmente rinnovato!
    TopoLinux è anche chat! irc.azzurra.org canale #topolinux
    La semplicità di questo dono è inversamente proporzionale alla qualità della nostra amicizia

  6. #6
    L'avatar di Guido8975
    Guido8975 non è connesso AlterVistiano
    Data registrazione
    16-10-2002
    Residenza
    Caserta
    Messaggi
    766

    Predefinito

    Vabbè ma scrivere un return in più nn mi cambia molto il fatto è che vorrei capire una cosa.Vi faccio un esempio molto pratico di cosa non riesco a capire.

    File delle procedure proc.php
    Codice PHP:
    //Procedura query
    function db_query($q){

    //Eseguo la query
    $result = mysql_query($q, $connessione);

    //return
    return mysql_fetch_array($result);

    }
    Pagina dove richiamo la funzione
    Codice PHP:
    ....

    while(
    $row = db_query($q)){
    echo
    $row[N_ID];
    }

    ....
    Eseguendo la funzione nella pagina il while mi va in loop infinito e scrive il primo valore fin quando non eccede il tempo di esecuzione.

    questa cosa me la portei spiegare forse perchè passa un solo parametro?!
    Ma è possibile?

    :-D mi sn fatto capace di molte cose strane ma di questa proprio non me ne faccio.
    Sopratutto il perchè non dovrebbe passare un array!

    Che mi dite voi??
    Vi ringrazio molte
    Ultima modifica di Guido8975 : 12-09-2008 alle ore 11.39.16

  7. #7
    Guest

    Predefinito

    La funzione è concettualmente sbagliata, te ne rendi conto anche dal nome: se si chiama query non deve fetchare, ma deve querare! :D

    Fai come l'esempio che ti ho postato: una funzione per la query e un'altra per fetchare.


    Ciao!

  8. #8
    L'avatar di Guido8975
    Guido8975 non è connesso AlterVistiano
    Data registrazione
    16-10-2002
    Residenza
    Caserta
    Messaggi
    766

    Predefinito

    Ok!Grazie mille funziona!Avevo provato male!

    Ti ringrazio molte sempre in gamba!!!
    Ciauz ragaz

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •