- Home
- Categorie
- Coding e Sistemistica
- PHP
- Query con PDO accedere agli attributi
-
Query con PDO accedere agli attributi
Buongiorno a tutti,
forse il titolo è poco chiaro, quindi di seguito cerco di fornire maggiori dettagli.Devo poter eseguire una query con PDO in PHP.
Ho una classe in php
[PHP]
class miaclasse {
private $PDO;
//PASSAGGIO DELLA CONNESSIONE public function __construct($PDOconn) { $this->PDO = $PDOconn; }public function estraiutente(){ try{
//PREPARO ED ESEGUO LA QUERY ESEMPIO $iduser = 4; $query = "SELECT * FROM utenti WHERE id = :id"; $richiesta_query = $this->PDO->prepare($query); $richiesta_query->bindParam(":id",$iduser, PDO::PARAM_INT); $richiesta_query->execute();
//CONTROLLO SE LA QUERY RESTITUISCE ALMENO UN RISULTATO if($richiesta_query->rowCount()==0){ throw new PDOException ("I Dati inseriti non RESTITUISCONO NULLA"); }
//ARRAY ASSOCIATIVO PER CONFRONTO PASSWORD $record = $richiesta_query->fetch(PDO::FETCH_ASSOC); $utente = $record['id'];
}catch(PDOException $e) { echo "<br />Message : ".$e->getMessage(); echo "<br />Message : ".$e->getline(); } //CATCH}
[/PHP]Funziona, ma al di fuori della funzione, quindi all'esterno del programma ho bisogno di accedere alla variabile $utente e anche ad altre variabili che dovrei inserire nel programma. Non so come sia possibile farlo.
Mi aiutate ?
Grazie mille.
-
Ciao,
la variabile $utente è dentro il metodo estraiutente della classe miaclasse, fattela tornare con un semplice return
[PHP]
return $utente;
[/PHP]se hai necessità di farti tornare più valori inseriscili in un array e fai il return dell'array.
Nel titolo hai utilizzato la parola attributi, un attributo è una proprietà della classe che si solito si dichiara private (o protected), per accedervi dall'esterno quindi si crea un metodo pubblico (es. get) che ritorna il valore dell'attributo.
Es.
[PHP]
private $id;public getId()
{
return $this->id;
}
[/PHP]
-
Ciao ho scritto una funzione di tipo public che si trova dentro una classe.
Allego foto perchè il forum non con i tag php non indenta il codice e diventa illegibile.All'esterno della funzione, accedo così
[PHP]
//ESTRAPOLO INFORMAZIONI
foreach($utente->estrapola_dati_utente_connesso($user_id_loggato) as $info_utente) {
$qnome = $info_utente['nome'];
$qemail = $info_utente['email'];
}
[/PHP]Esistono altri modi per semplificare o per migliorare l'accesso a questa function ?
-
Ciao,
puoi usare Pastebin per il codice https://pastebin.com/
Le righe 65-75 sono inutili, ritorna direttamente $richiesta_query->fetch(PDO::FETCH_ASSOC); oppure lo assegni ad una variabile e la ritorni
[PHP]
$dati = $richiesta_query->fetch(PDO::FETCH_ASSOC);
return $dati;
[/PHP]All'esterno in questo caso non hai bisogno di un ciclo poiché hai selezionato una sola riga dal database (con la funzione fetch() di PDO)
Quindi puoi utilizzare direttamente l'array in questo modo
[PHP]
$dati = $utente->estrapola_dati_utente_connesso($user_id_loggato);if ($dati) {
echo $dati['nome'];
}
[/PHP]
-
Non ho capito!
Nel senso che ho selezionato un solo utente vero, ma devo estrapolare tutti i campi di quel singolo utente (Nome, Cognome, Città ....) per questo ho utilizzato l'array
-
Non hai bisogno di ciclare l'array per accedere ai dati restituiti con la funzione fetch(), fai come il codice che ti ho postato.
Il ciclo ti servirebbe nel caso utilizzassi la funzione fetchAll() che ritorna tutte le righe della tabella.