2013-09-16 3 views
1

데이터베이스에 암호가 설정되어 있는지 확인하려고합니다. 하지만 순간의 그냥 여기 PHP 행 개수가 작동하지 않습니다.

내 코드 설정 암호가 있다고 "패스가 데이터베이스에없는"하지만이

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; 

답변

1

2 가능성이 있습니다

행이 존재 가능하지만, 반환되는 pass 값이 비어 있습니다. album_id = 1에 대한 데이터베이스 항목이있는 한, 암호가 데이터베이스에 있는지 여부에 관계없이 rowCount가 1을 반환해야합니다.

다른 가능성은 데이터베이스 구성이 PDO가 SELECT 문에서 rowCount()를 반환하지 못하게 할 수 있다는 것입니다. rowCount()는 UPDATE, INSERT 및 DELETE 용으로 설계되었으므로 SELECT와 항상 친숙하지는 않습니다. 자세한 내용은 link을 참조하십시오.

+0

그래서 내가 무엇을 맞습니까? 그것은 작동해야합니다. 그리고 패스가 비어 있다면 여전히 패스가 있다고 말하는 것입니다. 행 개수가 정확합니까? –

+0

번. rowCount()는 SELECT 문에 의존 할 수 없습니다. 'if ($ query-> rowCount()> 0)'대신'if (! empty ($ query-> fetchColumn (0)))'시도' – XaxD

+0

감사하지만 메 시지 오류 메시지가 표시됨, 메소드 반환 값을 사용할 수 없음 쓰기 문맥에서 –

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"; 
    } 
} 
0

시도

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

대신

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