1

データベースにパスワードが設定されているかどうかを確認しようとしています。しかし、現時点では、パスワードが設定されていると言っているだけです

これが私のコードです。「パスはデータベースにありません」で返されるはずですが、「パスはデータベースにあります」で返されます

    public function checkpass($currentalbumid)
{

    $query = $this->db->prepare("SELECT `pass` FROM `album` WHERE `album_id` = ?");

    $query->bindValue(1, $currentalbumid);

    $query->execute();

    if($query->rowCount() > 0){
        // password is in the batabase
        return "Pass is in the database";
    } else {
        // password is not in the database
        return "Pass is not in the database";
    }
}

この

    $currentalbumid = $_SESSION['album_id'];

    $check = $upload->checkpass($currentalbumid);

    echo $check;
4

3 に答える 3

1

2 つの可能性があります。

行が存在する可能性がありますが、pass返される値は空です。データベースに album_id = 1 のエントリがある限り、パスワードがデータベースにあるかどうかに関係なく、1 の rowCount を返す必要があります。

もう 1 つの可能性は、データベース構成が PDO が SELECT ステートメントで rowCount() を返すことを許可していないことです。rowCount() は UPDATE、INSERT、および DELETE 用に設計されているため、常に SELECT に適しているとは限りません。詳細については、このリンクを参照してください。

于 2013-09-16T19:31:31.000 に答える
1
public function checkpass($currentalbumid)
{

    $query = $this->db->prepare("SELECT * FROM `album` where `album_id` = ?");


    $query->bindValue(1, $currentalbumid);

    $query->execute();

    if($query->rowCount() > 0){
        // password is in the batabase
        while($row = $query->fetch(PDO::FETCH_ASSOC)) {

        if($row['pass']){
            echo '<input readonly type="password" class="input2" value="locked" /><input type="submit" class="addbtn" value="Locked" />';
        } else {
            echo '<input type="password" class="input2" id="album_password" placeholder="Want to add a password?" /><input type="submit" class="addbtn" id="lock" value="Lock" />';
        }

    }

    } else {
        // password is not in the database
        echo "album not found";
    }
}
于 2013-09-16T22:04:37.317 に答える
0

試す

$query = $this->db->query("SELECT `pass` FROM `album` WHERE `album_id` = ?"); 

それ以外の

$query = $this->db->prepare("SELECT `pass` FROM `album` WHERE `album_id` = ?"); 
于 2017-09-21T08:18:02.313 に答える