[Risolto] Problema ->prepare()
[Risolto] Problema ->prepare() postato il 05/08/2022 15:03:35 nel forum programmazione, open source e hosting e modificato da gdr-online.com il 05/08/2022 17:16:52
class pdo_connect{ private $pdo; public function __construct() { $this->pdo = new PDO("mysql:host=localhost;dbname=xxx;", "xxx", "xx"); } public function login($email,$password) { $query = " SELECT * FROM account WHERE email = :email AND password = :password"; $statement = $pdo->prepare($query); $statement->bindValue(":email", $email, PDO::PARAM_STR); $statement->bindValue(":password", $password, PDO::PARAM_STR); $statement->execute(); }}
cosa sto sbagliando? mi dice: Uncaught Error: Call to a member function prepare() on null in ....
Pagine → 1
05/08/2022 15:30:13 e modificato da blancks il 05/08/2022 15:31:10
Ciao! 😃 Quello che sbagli, nello specifico, è che fai uso della variabile "$pdo" che non viene definita da nessuna parte. L'errore te lo spiega:
Call to a member function prepare() on null
Letteralmente: "Stai chiamando la funzione membro prepare() su un valore null".Per accedere all'istanza salvata dentroprivate $pdo;
Devi usare la variabile speciale "$this" che contiene il riferimento della classe dentro cui stai operando e che ti permette di accedere alle sue proprietà o metodi.Detta in termini spiccioli:$statement = $this->pdo->prepare($query);
05/08/2022 15:30:21 e modificato da anneth il 05/08/2022 15:31:02
$statement = $pdo->prepare($query);
prova con$statement = $this->pdo->prepare($query);
edit: ops XD pensata e scritta insieme XD
05/08/2022 15:31:30 e modificato da soizora il 05/08/2022 15:32:11
...$this->pdo->prepare()...
Sei dentro la classe, visto che $pdo è una proprietà devi chiamarlo con $this
05/08/2022 16:17:14 e modificato da darkblade il 05/08/2022 16:19:02
uhmmm no...
class pdo_connect{ private $pdo; public function __construct() { try { $this->pdo = new PDO("mysql:host=localhost;dbname=xxx;", "xxx", "xxx"); } catch ( PDOException $e ) { echo 'ERROR!'; print_r( $e ); return false; } return true; } public function login($email,$password) { $query = "SELECT * FROM account WHERE email = :email AND password = :password"; try { $statement = $this->$pdo->prepare($query); $statement->bindValue(":email", $email, PDO::PARAM_STR); $statement->bindValue(":password", $password, PDO::PARAM_STR); $statement->execute(); } catch ( PDOException $e ) { echo 'ERROR!'; print_r( $e ); return false; } return true; }}
continua a darmi l'errore...
05/08/2022 16:23:44
$this->pdo = new PDO("mysql:host=localhost;dbname=xxx;", "xxx", "xxx");
hai dato le coordinate del db o hai copiaincollato il codice così com'è quindi non hia sostituito le varie xxx?
05/08/2022 16:33:27 e modificato da blancks il 05/08/2022 16:39:17
darkblade ha scritto: uhmmm no...continua a darmi l'errore...
. L'errore è lo stesso di prima? Se diverso, puoi copiarlo qui?. Potresti mostrare anche la parte di codice in cui richiami la classe e usi il metodo login?Edit: ho notato solo in seguito questo:$statement = $this->$pdo->prepare($query);
E' un errore, va scritto così (senza il $):$statement = $this->pdo->prepare($query);
05/08/2022 17:11:40
E' un errore, va scritto così (senza il $):
$statement = $this->pdo->prepare($query);
[/quote]funziona grazieeeeee :D
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!