2016-04-12 8 views
0

これまでに尋ねられたすべての同様の質問を見て、それらはすべて異なるコードを持っていますので、プログラムが返されます:致命的なエラー:非オブジェクト上のメンバ関数fetch()を呼び出す

私の問題は、私のプログラムは、MySQLデータベースから情報を要求するときに、私のPHPコードが実行される

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

を返すということです。ここに私のコードは次のとおりです。

<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>"; 
    } 

} 

?> 

私が確認するためにprint文を持っているとして、それは間違いなく、データベースに接続します。 (MDP - >パスワード)*

+0

この方法を試してみてくださいデシベル

から任意のistanceを得ることはありません、それは失敗し、あなたはなぜhttp://php.net/を見つける必要があり、引用符をフォーマットしましたmanual/en/pdo.error-handling.php - http://php.net/manual/en/function.error-reporting.php –

+3

'$ requete =" mdpを選択して、AY_usersからlogin = '"と入力します。 _POST ['login']。 "'"; 'これであなたのエラーは修正されるはずですが、SQLインジェクション攻撃に脆弱なままになります。 –

+0

また、準備された文を使用してSQLインジェクション攻撃を防止します。 http://php.net/manual/en/pdo.prepared-statements.php –

答えて

0

Yuoは間違ったクエリが

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

ああ大丈夫だと思っています!お返事ありがとうございます –

+0

うまくいけば回答を受け入れてください – scaisEdge

0

PDO::query()PDOStatementオブジェクト、失敗した場合にFALSE を返します。

クエリが失敗しています(falseを返しています)。だからあなたはオブジェクトではないエラー:$responseはオブジェクトではありません。この場合、bool(false)です。