2016-08-23 111 views
0

所以我在一個特定的表,其中的用戶名是已在數據庫中,像這樣抓行量:PHP PDO rowCount不工作?我認爲

$second_sql = $db->prepare("SELECT * FROM users WHERE username = :username");  
$second_sql->bindParam(':username', $username);  
$second_sql->execute(); 

if($second_sql->rowCount() == 1) { 
    $db = null; 
    header("Location: ../login/"); 
} else { 
    $statement->execute(); 
    $db = null; 
} 

的問題是它不工作。如果你需要更多的腳本,請告訴我。

+4

「不工作」是什麼意思? – Chris

+0

這不是抓行數。 –

+0

你沒有取任何東西。你缺少$ result = $ second_sql-> fetchAll(); – happymacarts

回答

0

某些數據庫不會使用PDO->rowCount()方法報告行計數。

SQLite,例如。

所以不要使用rowCount();這樣做會使您的代碼更輕便。

請在查詢中使用COUNT(*)函數,並將結果存儲在變量中。

最後,使用fetchColumn()方法使用該變量來獲取唯一列(用戶)。

所以,你可以玩這個:

try { 
    $second_sql = $db->prepare("SELECT COUNT(*) from users WHERE username = :username"); 
    $second_sql->bindParam(':username', $username, PDO::PARAM_STR); 
    $second_sql->execute(); 
    $count = $second_sql->fetchColumn(); 
} catch (PDOException $e) { 
    // Here you can log your error 
    // or send an email 
    // Never echo this exception on production 
    // Only on development fase 
    echo "Error: " . $e->getMessage(); 
} 

if ($count) { 
    $db = null; 
    header("Location: ../login/"); 
} else { 
    $statement->execute(); 
    $db = null; 
} 

也許你想測試你調理單行:

if ($count == 1) 

希望這有助於你。

乾杯!