+ Rispondi al Thread
Pagina 1 di 3 123 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21

Discussione: Stored Procedure con php e mysql

  1. #1
    sanfra non è in linea Scolaretto
    Post
    373

    Stored Procedure con php e mysql

    Store Procedure con php e mysql

    Salve, ho bisogno di un Vostro aiuto per quanto riguarda le store procedure con mysql 5.0 che io vorrei creare da codice php e e poi richimarle.

    Io faccio così:



    code:--------------------------------------------------------------------------------

    $conn=DB::conn();
    $query="CREATE PROCEDURE TEST(id)";
    $query.="BEGIN";
    $query.="SELECT * FROM cat WHERE CATEGORIA=id";
    $query.="END";
    --------------------------------------------------------------------------------


    Ma poi come la richiamo?

    Potete darm iuna mano?

    Grazie

  2. #2
    L'avatar di bottomap
    bottomap non è in linea Moderatore Globale
    Post
    4,130
    Ciao,

    L'oggetto DB di cui invochi DB::conn cos'è esattamente? Un Pear DB?
    Una volta che hai aperto la connessione basterà invocare il meotodo opportuno per eseguire la query, ma ovviamente il metodo dipende da ciò che restituisce la conn ($conn).

    Se $conn è l'oggetto restituito da un Pear DB, il metodo query() esegue una query sql e potrebbe fare al caso tuo.

    Ciaociao


    Venite a farmi un saluto su http://www.bottomap.com/

    - Come porre domande in modo intelligente
    - Hai mai dato un'occhiata al
    Regolamento del Forum? Se la risposta è no, sarebbe proprio l'ora di farlo...
    - Il Crossposting è vietato dalla Netiquette.

    "Solo Puffin ti darà forza e grinta a volontà" - Charlie O'Brian
    "I gatti sono animali verso cui ho il massimo rispetto. I gatti e i non conformisti mi sembrano davvero i soli esseri in questo mondo che abbiano una coscienza pratica e attiva" - Jerome K. Jerome
    "Dun Dun DUNNN!" - Capitan Caos
    (per chiunque se lo fosse mai chiesto, il nick Bottomap è volutamente sgrammaticato)

  3. #3
    sanfra non è in linea Scolaretto
    Post
    373
    Innanzitutto grazie ancora per l'imminenza con cui rispondi alle mie problematiche.

    La classe DB::conn non è una classe Pear ma è una mia classe creata personalmente dove creo una variabile statica e una funzione statica dove poi la richiamo così nelle varie pagine.


    e la classe restitutisce solo la chiamata alla connessione del database

  4. #4
    L'avatar di bottomap
    bottomap non è in linea Moderatore Globale
    Post
    4,130
    Ciao,

    Allora dovresti farci sapere, nella tua classe, cosa hai usato per dare un valore alla variabile conn (mysql_connect, DB::connect o cos'altro).
    La funzione da richiamare per effettuare la query sarà quella appropriata al tipo di connessione che stai effettuando, ma senza sapere cosa usi internamente non è possibile indicarti che cosa usare per eseguire la query.

    Ciaociao


    Venite a farmi un saluto su http://www.bottomap.com/

    - Come porre domande in modo intelligente
    - Hai mai dato un'occhiata al
    Regolamento del Forum? Se la risposta è no, sarebbe proprio l'ora di farlo...
    - Il Crossposting è vietato dalla Netiquette.

    "Solo Puffin ti darà forza e grinta a volontà" - Charlie O'Brian
    "I gatti sono animali verso cui ho il massimo rispetto. I gatti e i non conformisti mi sembrano davvero i soli esseri in questo mondo che abbiano una coscienza pratica e attiva" - Jerome K. Jerome
    "Dun Dun DUNNN!" - Capitan Caos
    (per chiunque se lo fosse mai chiesto, il nick Bottomap è volutamente sgrammaticato)

  5. #5
    sanfra non è in linea Scolaretto
    Post
    373
    Si, ti inserisco i lcodice :

    Codice PHP:
    <?php

    class DB{
        
        private static 
    $connessione;
        
        
        public static function 
    conn(){
            
            
            
                
    $conn=@mysql_connect('localhost','root','sandrina') or die(mysql_error());
                
    $db=@mysql_select_db('AmoreItaliano',$conn) or die(mysql_error());
                
    DB::$connessione=$conn;
                
        
        return 
    DB::$connessione;        
        }
    QUello che stavo leggendo in un sito, se posso aggiungere, è che si rischiama con Call <nomestore>e i parametri però 'esempi era con mysqli e io uso mysql.

  6. #6
    L'avatar di bottomap
    bottomap non è in linea Moderatore Globale
    Post
    4,130
    Ciao,

    Visto che hai usato la mysql_connect per ottenere la connessione, per effettuare una query sarà sufficiente usare una:
    $result=mysql_query('query');
    La connessione utilizzata sarà quella dell'ultimo mysql_connect invocato. In alternativa, in maniera meno compatta puoi specificare:
    $result=mysql_query('query',$conn)

    Il risultato della mysql_query può essere passato alle funzioni specifiche (tipo mysql_fetch_array, mysql_fetch_assoc, mysql_fetch_row) per scorrere l'eventuale recordset restituito.
    Nel caso di query che non ritornano recordset (DELETE, UPDATE, INSERT) la funzione tornerà TRUE.

    Ciaociao


    Venite a farmi un saluto su http://www.bottomap.com/

    - Come porre domande in modo intelligente
    - Hai mai dato un'occhiata al
    Regolamento del Forum? Se la risposta è no, sarebbe proprio l'ora di farlo...
    - Il Crossposting è vietato dalla Netiquette.

    "Solo Puffin ti darà forza e grinta a volontà" - Charlie O'Brian
    "I gatti sono animali verso cui ho il massimo rispetto. I gatti e i non conformisti mi sembrano davvero i soli esseri in questo mondo che abbiano una coscienza pratica e attiva" - Jerome K. Jerome
    "Dun Dun DUNNN!" - Capitan Caos
    (per chiunque se lo fosse mai chiesto, il nick Bottomap è volutamente sgrammaticato)

  7. #7
    sanfra non è in linea Scolaretto
    Post
    373
    Non ho capito e scusa il parametro id della store procedure come lo inserisco?

    e scusa gli esempi con Call che ti dicevo prima il quale richiama una funziona non conta nulla?


    Poi volevo farti un altro esempio con una store procedure.
    ad esempio ipotizziamo che io abbia una sp con un parametro in uscita e dentro questa sp devo fare una select su dei record e deve tornami il parametro con il valore i oppure zero.Posso chiederti come si potrebbe implementare?


    Grazie

  8. #8
    L'avatar di bottomap
    bottomap non è in linea Moderatore Globale
    Post
    4,130
    Ciao,

    Lo spezzone che hai postato crea una stored procedure nel db, non la richiama...

    Quando la vuoi richiamare puoi costruire,ad esempio, $query="call Test(".$id.")"; e richiamarla con la mysql_query($query).

    A seconda di cosa faccia la procedura, il ritorno di mysql_query sarà un recordset (al limite formato da record contenente un solo valore - se la sp ritorna qualcosa al termine c'è una select), le mysql_fetch_xxxx ti permettono di recuperarlo.
    Nel codice che hai postato, ad esempio, selezioni tutti i record con un dato id, $result=mysql_query(...) sarà questo recordset risultante.

    Ciaociao


    Venite a farmi un saluto su http://www.bottomap.com/

    - Come porre domande in modo intelligente
    - Hai mai dato un'occhiata al
    Regolamento del Forum? Se la risposta è no, sarebbe proprio l'ora di farlo...
    - Il Crossposting è vietato dalla Netiquette.

    "Solo Puffin ti darà forza e grinta a volontà" - Charlie O'Brian
    "I gatti sono animali verso cui ho il massimo rispetto. I gatti e i non conformisti mi sembrano davvero i soli esseri in questo mondo che abbiano una coscienza pratica e attiva" - Jerome K. Jerome
    "Dun Dun DUNNN!" - Capitan Caos
    (per chiunque se lo fosse mai chiesto, il nick Bottomap è volutamente sgrammaticato)

  9. #9
    sanfra non è in linea Scolaretto
    Post
    373
    Alcune volte mi chiedo se ci sono o ci faccio...

    Grazie ancora di tutto

    Sei stato preziossisimo per me.


    Alla prossima

  10. #10
    sanfra non è in linea Scolaretto
    Post
    373
    Scusa se ritorno insistentemente sull'argomento io ho provato ancora una volta a fare degli esempi con le store procedure, subito dopo il tuo suggerimento,però non mi funzionano

    Questo è il codice che posto io:

    Codice PHP:

    <?php
    include('dbclass.php');
    $rec=10;

    $conn=DB::conn();

    $query="CREATE PROCEDURE club(IN id INT)";
    $query.="BEGIN";
    $query.="SELECT * FROM c3 WHERE ID=id";
    $query.="END";
    $ris=@mysql_query($query);

    $sql="CALL club(".$rec.")";
    $risultato=@mysql_query($sql);

    $row=@mysql_fetch_assoc($risultato);

    echo 
    $row['COGNOME'];


    ?>
    Che cosa c'è di errato?

    Tieni conto che non mi dà nessun errore, ma neppure nussun risultato cioè la pagina è bianca.

    La versione di mysql che mi ritrovo è 5.0.24;

    Grazie ancora

+ Rispondi al Thread
Pagina 1 di 3 123 ultimoultimo

LinkBacks (?)

  1. 21-04-2012, 21:04

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi