2017-11-22 13 views
-1

私はPDOを練習しようとしています。いくつかのガイドを読んでいますが、私は何がエラーなのか分かりません。どんな助けでも大歓迎です。致命的なエラー:booleanのメンバー関数rowCount()を呼び出す

config.phpの

<?php 
try { 
    $db = new PDO('mysql:host=localhost;dbname=phpdb;charset=utf8mb4', 
'root', 
'Asdqwe123'); 
    if (!$db) { 
     die('Connect from database error'); 
    } 
} catch (Exception $e) { 
    echo $e->getMessage(); 
} 
?> 

login.php

<?php 
require 'config.php'; 

if (isset($_POST['submit'])) { 
    try { 
     $username = $_POST['username']; 
     $password = $_POST['pass']; 

     $stmt = $db->prepare("SELECT * FROM login WHERE user = ? AND pass = 
?"); 
     $stmt->execute(array($username, $password)); 
     $row = $stmt->fetch(); 

     if ($row > 0) { 
      echo "Success"; 
     } else { 
      echo "Worng password or Username"; 
      header('Refresh: 1, url=index.php'); 
     } 
    } catch (Exception $e) { 
     $e->getMessage(); 
    } 
} 
?> 

更新日: ありがとうございました!それはすべて今働いている。 dsnが間違っています。

+0

である必要があります。単に$ count = count($ result); – GrumpyCrouton

+2

なぜプリペアドステートメントを使用していて、プリペアドステートメント機能を使用していませんか? SQLインジェクションにはまだ**広い**オープンしています。 –

+0

**平文のパスワードを保存しないでください** ** PHPの[組み込み関数](http://jayblanchard.net/proper_password_hashing_with_PHP.html)**( 'password_hash()'と 'password_verify()')を使用してくださいパスワードのセキュリティを処理します。 5.5より小さいPHPバージョンを使用している場合、 'password_hash()' [互換パック](https://github.com/ircmaxell/password_compat)を使用することができます。 **ハッシュする前に[パスワードをエスケープする](http://stackoverflow.com/q/36628418/1011527)必要はありません。また、他のクレンジングメカニズムを使用することもできます。パスワードを変更すると_パスワードが変更され、不要な追加のコーディングが発生します。 – GrumpyCrouton

答えて

0

あなたの問題は接続文字列だと思います。 localhost, dbnameは、localhost; dbname

関連する問題