Appel à la méthode non PDO::execute()
je suis en train de coder une page de connexion, mais j'ai été bouchon à cette erreur
pliz me dire la mauvaise chose ici
<?php
@session_start();
include("../../connexion/connexion.php");
class login_class {
public $user;
public $password;
public $connexion;
public function check_login() {
try {
$cn = new class_connect();
$this->connexion = $cn->connect(null);
$result = $this->connexion->execute("select * from user where username='$this->user' and password='$this->password'");
$data = $result->fetchAll(PDO::FETCH_OBJ);
if (!empty($data[0]->id_user)) {
return true;
}else {
return false;
}
}catch(PDOException $ex) {
echo $ex->getMessage();
}
}
public function __construct($user) {
if($user){
$this->user = $user["username"];
$this->password = $user["password"];
}
}
}
?>
execute()
est une méthode dePDOStatement
pasPDO
. La façon dont vous utilisez PDO ici est un peu confus.- pliz u peut me donner la bonne syntaxe
- Vous pensez probablement de
PDO::exec()
bien que ce n'est pas appropriée pour votre requête. Vous devez utiliserPDO::query()
lors d'uneSELECT
déclaration. En outre, vous disposez d'injection SQL problèmes avec votre code. Vous devriez prendre le temps de lire sur le PDO de déclarations préparées à l'avance.
Vous devez vous connecter pour publier un commentaire.
->execute()
est pour les instructions préparées. par exemple,Vous essayez d'exécuter une requête directement sur la DB principaux objet. Pour les AOP, ce qui signifie
Vous devriez vraiment regarder dans les déclarations préparées à l'avance. Vous êtes vulnérable à Les attaques par injection SQL comme il est, et puisque vous êtes en utilisant PDO pour commencer, il est impardonnable de ne PAS être écrit en sécurité requêtes.
->execute()
est pour les déclarations préparées à l'avance"?