2017-11-17 5 views
-2

こんにちは、これらのエラーで私を助けることができますか?私はちょうど私がサイトに入ったばかりで、このエラーが発生しました。Error booleanのメンバー関数fetchAll()を呼び出す

Fatal error: Call to a member function rowCount() on boolean in C:\xampp\htdocs\settings.php on line 6

if (isset($_COOKIE['hash'])) { 
    $sql = $db->query("SELECT * FROM `users` WHERE `hash` = " . $db->quote(filter_var($_COOKIE['hash'], FILTER_SANITIZE_STRING))); 
    if ($sql->rowCount() != 0) { //line 6 
     $row = $sql->fetch(); 
     $user = $row; 
    } 
} 

Fatal error: Call to a member function fetchAll() on boolean in C:\xampp\htdocs\login.php on line 42

 $hash = md5($steamid . time() . rand(1, 50)); 
     $sql = $db->query("SELECT * FROM `users` WHERE `steamid` = '" . $steamid . "'"); 
     $row = $sql->fetchAll(PDO::FETCH_ASSOC); //line 42 
     if (count($row) == 0) { 

      $name = str_replace("script", "*", $name); 
      $name = str_replace("/", "*", $name); 
      $name = str_replace("<", "*", $name); 
      $name = str_replace(">", "*", $name); 
      $name = str_replace("body", "*", $name); 
      $name = str_replace("onload", "*", $name); 
      $name = str_replace("alert", "*", $name); 
      $name = str_replace(")", "*", $name); 
      $name = str_replace("(", "*", $name); 
      $name = str_replace("'", "*", $name); 
+0

md5ハッシュは役に立たず、長年にわたってクラック可能です。より新しいSHAアルゴリズムのような強力なものを使用してください。また、あなたのコードは潜在的にSQLインジェクション攻撃に対して脆弱です。 PDOを使用しているので、パラメータ化機能を利用しています。 – ADyson

+0

とにかく、これらの関数を呼び出すことができない理由は、おそらくクエリが何とか失敗したためです。 http://php.net/manual/en/pdo.query.phpは、PDOStatementオブジェクトを返す代わりに、メソッドが失敗したときに 'false'を返すことを示しています。エラー報告をオンにし、何がうまくいかないかを確認します。 – ADyson

答えて

-1

クエリが常に正常に実行されますと仮定する理由は絶対にありません。あなたの罪はエラー処理を行わないことです。つまり、query()が何を返したかをチェックすることができません。そして、ドキュメントでそれを返す:あなたがbooleanを得るように

PDO::query() returns a PDOStatement object, or FALSE on failure. 

を、それは明らかに、それはあなたのクエリに失敗したことを意味します。

関連する問題