Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420

    [PDO] accesso ai campi DB

    Ciao a tutti;
    ho difficoltà quando provo ad accedere ai vari campi restituiti tramite una query...
    La mia query è molto semplice e in questo caso sto utilizzando l'istruzione sql di PDO:

    Codice PHP:
    $sql SELECT FROM utenti WHERE login 'Pippo'
    Su una guida all'utilizzo PDO leggo testualmente:
    "...il suo risultato è un PDOStatement object (oggetto restituito da PDO), contenente i risultati ottenuti tramite l'interrogazione, che può essere manipolato come un array"
    Ma se per accedere ai risultati utilizzo il codice :

    Codice PHP:
    $db->query($sql);
    echo 
    $db['login']; 
    Ottengo l'errore: "Cannot use object of type PDO as array..."

    Quindi modifico il codice in:

    Codice PHP:
    $db->query($sql);
    $res $sql->fetchAll();
    echo 
    $res['login']; 
    e ottengo l'errore: "Call to a member function fetchAll() on a non-object..."

    Insomma non riesco a capire se il risultato della query è considerato un oggetto o un array e come accedervi...

  2. #2
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,650
    mi sembra che tu abbia un pò di confusione in testa

    Codice PHP:
    $q $db->query($sql);
    $res $q->fetchAll();
    echo 
    $res['login']; 

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420
    Uhm..uhm... :-D
    In effetti si!

    dopo l'istruzione

    $res = $q->fetchAll();

    in $res c'è l'array della tupla? In tal caso con $res[0] dovrei riuscire ad accedere al primo elemento?

  4. #4
    Originariamente inviato da sitodue
    Uhm..uhm... :-D
    In effetti si!

    dopo l'istruzione

    $res = $q->fetchAll();

    in $res c'è l'array della tupla? In tal caso con $res[0] dovrei riuscire ad accedere al primo elemento?
    Non ti basterebbe fare una semplice prova per verificarlo?!?!

    Ed il manuale, questo sconosciuto, con i suoi innumerevoli esempi?

    fetchAll()
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420
    Originariamente inviato da satifal
    Non ti basterebbe fare una semplice prova per verificarlo?!?!
    No, io il codice lo penso soltanto.. poi provo ad eseguirlo mentalmente nel cervelletto...
    A te non basterebbe semplicemente ignorare i thread che trovi tediosi?

    Cmq, non riesco ad accedere con il codice postato da ranma: "undefined index"... anche se il nome del campo è quello quindi credo di non avere ancora l'array in quella variabile... o sto sbagliando ad interrogarla...
    In ogni caso se me lo spieghi te ne sono grato, altrimenti leggiti la repubblica in pausa pranzo...

  6. #6
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,650
    fetchAll in realtà ti ritorna un array multidimensionale con n record. quindi per prendere il primo record devi fare

    Codice PHP:
    $res[0]['login']; 
    oppure usare fetch al posto di fetchAll

  7. #7
    ok, tu pensalo nel cerveletto il codice, e noi tiriamo ad indovinare dove sbagli:

    Codice PHP:
    $q $db->query($sql); 
    $res $q->fetchAll(); 
    var_dump($res); 
    e vedi un pò che cosa tira fuori... da notare che come dice il manuale http://www.php.net/manual/en/pdostatement.fetchall.php a seconda del fetch style utilizzato cambia la struttura dell'array ritornata. Il fetch style è discusso nel metodo fetch http://www.php.net/manual/en/pdostatement.fetch.php del pdostatement. Puoi tranquillamente divertirti a cambiare la modalità di fetch finchè non trovi quella che ti aggrada di piu (in genere PDO::FETCH_ASSOC)
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420
    Originariamente inviato da Ranma2
    fetchAll in realtà ti ritorna un array multidimensionale con n record. quindi per prendere il primo record devi fare

    Codice PHP:
    $res[0]['login']; 
    oppure usare fetch al posto di fetchAll
    Perfetto!
    e chiaro considerando l'insieme delle tuple!
    Grazie 1000!

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.