2014-04-14 51 views
1

我有一個接受電子郵件的啓動頁面。我正在計算表格中的電子郵件總數。但是,我正在努力實現它的工作。 sql似乎是準確的,因爲我在phpmyadmin中運行了sql腳本,並且它返回了正確的值。但是,當我執行我分配了sql腳本的變量的var_dump時,它不會返回正確的值。有什麼建議麼?PHP計數SQL表中的條目數

PHP

require(ROOT_PATH . "inc/database.php"); 
try { 
    $query = $db->prepare("REPLACE INTO launch_email VALUES ('$email')"); 
    $query->execute(); 
    $editEmail = $db->exec("SELECT COUNT(email) FROM launch_email"); 
    var_dump($editEmail); 
} catch (Exception $e) { 
    echo "Data could not be submitted to the database."; 
exit; 
} 
+3

旁註:你有一個失蹤退出後'右括號'}'; '嘗試使用'exit($ e-> getMessage())顯示錯誤信息本身;' –

+0

您需要在執行後取回它。 – iamsleepy

+0

您可以使用'AS value_name'來分配一個名稱和訪問權限,否則它將作爲密鑰對'COUNT(email)'返回。所以:'SELECT COUNT(email)AS ttl_emails FROM launch_email' –

回答

1

PDO::exec()不返回SELECT語句的結果 - 你應該使用PDO::query代替:

require(ROOT_PATH . "inc/database.php"); 
try { 
    $query = $db->prepare("REPLACE INTO launch_email VALUES ('$email')"); 
    $query->execute(); 

    // dummy traversable - it'll only loop once 
    for ($db->query("SELECT COUNT(email) AS cnt FROM launch_email") as $row) { 
     print $row['cnt']; 
    } 
} catch (Exception $e) { 
    echo "Data could not be submitted to the database."; 
} 
exit; 
+0

我在打印$行['cnt']行得到這個錯誤; PHP致命錯誤:不能使用類型爲PDOStatement的對象作爲數組... –

+0

@RyanSalmons arg,是的,忘記了'query'不會返回一個數組,而是一個可遍歷的'PDOStatement'。固定。 – Mureinik

1
$editEmail = $db->query("SELECT COUNT(email) as email_count FROM launch_email");  
$fet = $db->fetch(); 

if($fet['email_count'] > 0) 
{ 
    // Email exists 
} 
else 
{ 
    // Email does not exist 
} 
+0

PHP致命錯誤:調用未定義的方法PDO :: fetch() –

1

我假設$dbPDO一個實例。

問題是您正在使用PDO類的exec方法,該方法僅返回受指定SQL查詢影響的行數。

您需要改用query方法。這將返回一個PDOStatement的實例。如果您在此實例上調用fetchColumn方法,則會得到期望的結果。

0
If you have to return count then you can use "print_r($editEmail)" also please check it. 

Or try this one 

$sql = "SELECT COUNT(email) FROM launch_email"; 
$result = $db->prepare($sql); 
$result->execute(); 
$number_of_rows = $result->fetchColumn(); 
echo $number_of_rows; 
1

所以我能弄明白......這正是我需要的:

PHP

function get_count($count_id, $count) { 

    $output = ""; 

    $output = $output . $count["email_count"]; 

    return $output; 
} 


try { 
    $totalEmail = $db->query("SELECT COUNT(email) as email_count FROM launch_email"); 
} catch (Exception $e) { 
    echo "Date could not be retrieved from database."; 
    exit; 
} 
$countTotal = $totalEmail->fetchAll(PDO::FETCH_ASSOC); 

foreach($countTotal as $count_id => $count) { 
    echo get_count($count_id,$count); 
}