-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が間違っています。
である必要があります。単に$ count = count($ result); – GrumpyCrouton
なぜプリペアドステートメントを使用していて、プリペアドステートメント機能を使用していませんか? SQLインジェクションにはまだ**広い**オープンしています。 –
**平文のパスワードを保存しないでください** ** 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