php行计数不工作

php行计数不工作,php,pdo,rowcount,Php,Pdo,Rowcount,我试图检查数据库中是否设置了密码。但目前它只是说有一个密码集 这是我的代码,应该返回“Pass不在数据库中”,但返回“Pass在数据库中” 还有这个 $currentalbumid = $_SESSION['album_id']; $check = $upload->checkpass($currentalbumid); echo $check; 有两种可能性: 行可能存在,但返回的pass值为空。只要数据库中有album_id=1的条目,它就应该返回1的行数

我试图检查数据库中是否设置了密码。但目前它只是说有一个密码集

这是我的代码,应该返回“Pass不在数据库中”,但返回“Pass在数据库中”

还有这个

    $currentalbumid = $_SESSION['album_id'];

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

    echo $check;

有两种可能性:

行可能存在,但返回的
pass
值为空。只要数据库中有album_id=1的条目,它就应该返回1的行数,而不管密码是否在数据库中

另一种可能是数据库配置不允许PDO在SELECT语句上返回rowCount()。rowCount()是为更新、插入和删除而设计的,因此它与SELECT并不总是友好的。有关更多信息,请参见此

公共函数检查通过($currentalbumid)
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";
    }
}
{ $query=$this->db->prepare(“从'album'中选择*,其中'album\u id`=?”; $query->bindValue(1,$currentalbumid); $query->execute(); 如果($query->rowCount()>0){ //密码在batabase中 while($row=$query->fetch(PDO::fetch_ASSOC)){ 如果($row['pass'])){ 回声'; }否则{ 回声'; } } }否则{ //密码不在数据库中 回显“未找到相册”; } }
试试看

而不是

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

所以我所说的是正确的?它应该是有效的。是的,如果通行证是空的,它仍然说有通行证。rowcount对此是否正确?否。对于SELECT语句,rowcount()不可靠。尝试
if(!empty($query->fetchColumn(0))
而不是
if($query->rowCount()>0)
谢谢,但我收到一条错误消息,无法在写入上下文中使用方法返回值您需要执行
$result=$query->execute()。然后您可以尝试
$result->rowCount()
!空($result->fetchColumn(0))
即使对于rowCount()??
$query = $this->db->query("SELECT `pass` FROM `album` WHERE `album_id` = ?"); 
$query = $this->db->prepare("SELECT `pass` FROM `album` WHERE `album_id` = ?");