2016-04-12 20 views
0

Önceden sorulmuş tüm benzer sorulara baktım ve hepsinin farklı kodları var, bu yüzden bir yanıt bulamıyor!Program geri dönüyor: Önemli hata: Nesne olmayan bir nesne üzerinde bir üye işlevi getirme işlevi() çağrısı

Sorunum benim program MySQL veritabanından bilgi isterken benim php kodu çalıştırılır

Fatal error: Call to a member function fetch() on a non-object

döndürür olmasıdır. Emin olmak için print deyimi olarak kesinlikle veritabanına bağlanan

<body> 
<?php 
// Connexion à la base de données 
include_once("connexionMysql.php"); 

// test si bouton ok 
if (isset($_POST['valid'])) { 
    // construction de la req. 
    $requete="SELECT mdp, type FROM AY_users 
      WHERE login='.$_POST['login'].'"; 
    // exécution de la requête 
    $reponse = $bdd->query($requete); 

    if ($donnees=$reponse->fetch(PDO::FETCH_ASSOC)) { 
     if ($donnees['mdp']==$_POST['mdp']) { 
      // le mot de passe est le bon 

      print "<br/>Authentification réussie ! <br/>\n"; 
      if($donnees['type']==0){ 
       header("Location: pageDaccueilAdmin.php"); 
      } 
      if($donnees['type']==1){ 
       header("Location: pageDaccueilEnseignant.php"); 
      } 
      if($donnees['type']==2){ 
       header("Location: pageDaccueilCher.php"); 
      } 
     } else { 
      print "Le mot de passe n'est pas le bon, veuillez reessayer<br/>"; 
      print "<a href='authentif.php'>Se reconnecter</a>"; 
     } 
    } else { 
     // sinon : login inexistant 
     print "Ce login est inexistant, veuillez <br/>\n"; 
     print "1- <a href='authentif.php'>Se reconnecter</a>"; 
     print "2- <a href='creer.php'>créer un compte</a>"; 
    } 

} 

?> 

: İşte benim kodudur. (MDP -> şifre) *

+0

başarısız deneyin db herhangi istance alamadım Tırnakları Sorgunuzla biçimlendirilmiş ve öğrenmek için neden ihtiyaç http://php.net/ manual/tr/pdo.error-handling.php - http://php.net/manual/en/function.error-reporting.php –

+3

'$ requete =" SELECT mdp, FROM AY_users WHERE login = '"yazın. _POST ['login']. "'"; 'Bu sizin hatayı düzeltmeli, ancak sizi SQL enjeksiyon saldırılarına karşı savunmasız bırakacaktır. –

+0

Ayrıca, SQL enjeksiyon saldırılarını önlemek için hazırlanan ifadeleri kullanın. http://php.net/manual/en/pdo.prepared-statements.php –

cevap

0

Yuo yanlış

bu şekilde

$requete="SELECT mdp, type FROM AY_users 
     WHERE login='" .$_POST['login']. "'"; 
// exécution de la requête 
$reponse = $bdd->query($requete); 
+0

Ah Tamam, işe yaradığını düşünüyorum! Teşekkürler –

+0

eğer çalışıyorsa lütfen cevabı kabul edildi olarak işaretleyin – scaisEdge

0

PDO::query() bir PDOStatement nesnesi, aksi takdirde YANLIŞ döndürür.

Sorgunuz başarısız (yanlış). Bu nedenle, nesne olmayan hatasını aldınız: $response bir nesne değildir. Bu durumda bool(false).

İlgili konular