Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未定义的属性:PDO语句::$rows_Php_Pdo_Mysql Error 1064 - Fatal编程技术网

Php 未定义的属性:PDO语句::$rows

Php 未定义的属性:PDO语句::$rows,php,pdo,mysql-error-1064,Php,Pdo,Mysql Error 1064,我不知道为什么会有这样的代码: if($sth->rows == 0){ echo "Incorrect username or password - 1"; } 正在提取错误未定义属性:PDOStatement::$rows。这在另一个PHP脚本上运行得很好,我基本上只做了一些更改。然而,我也收到了回音“不正确的用户名或密码-1”,这意味着if语句确实运行了 下面是完整的PHP代码 <?php $lusername = $_POST['username']; $lpass

我不知道为什么会有这样的代码:

if($sth->rows == 0){
    echo "Incorrect username or password - 1";
}
正在提取错误未定义属性:PDOStatement::$rows。这在另一个PHP脚本上运行得很好,我基本上只做了一些更改。然而,我也收到了回音“不正确的用户名或密码-1”,这意味着if语句确实运行了

下面是完整的PHP代码

<?php
$lusername = $_POST['username'];
$lpassword = $_POST['password'];

//Hashing password
$cost = 10;

$salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.');

$salt = sprintf("$2a$%02d$", $cost) . $salt;

$hash = crypt($lpassword, $salt);

// Create connection
$dsn = 'mysql:dbname=weblupne_template3;host=localhost';
$username = 'somethingFreakingCrazyMagical';
$password = 'somethingEvenMoreCrazyFreakingMagical';
try {
    $db = new PDO($dsn, $username, $password); // also allows an extra parameter of configuration
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // set the PDO error mode to exception
} catch(PDOException $e) {
    die('Could not connect to the database:<br/>' . $e);
}

//Where to select from
$sth = $db->prepare('SELECT password FROM login WHERE username = :username LIMIT 1');
$sth->bindParam(':username', $lusername);
$sth->execute();
$user = $sth->fetch(PDO::FETCH_OBJ);

if($sth->rows == 0){
    echo "Incorrect username or password - 1";
}
else{
    //Tests if correct
    echo $user->hash;
    if ( hash_equals($user->password, crypt($lpassword, $user->password)) ) {
        echo "You check out";
    }
    else{
        echo "Incorrect username or password - 2";
    }
}
?>


您必须使用
$sth->rowCount()
,没有名为
的属性rows

可能查询执行失败,您不检查,你只是假设。我把执行部分放在一个try-and-catch语句中,没有收到任何异常。不,你的连接在一个try\catch中,不是select-queryright,我理解,但我是说我只是尝试将所有内容都放在try-catch语句中,并收到了相同的反馈。好的,对不起,没有什么想法。这是完美的。我不明白为什么->行可以在我的另一个php页面上工作。