2017-08-24 84 views
-1

我有這樣的代碼來獲得一個COUNT DISTINCT數據:獲取與預處理語句COUNT DISTINCT數據

$param = 'email'; 

    $stmt = $conn->stmt_init(); 
    $stmt = $conn->prepare("SELECT COUNT(DISTINCT(?)) FROM contatos"); 
    $stmt->bind_param('s',$param); 
    $stmt->execute(); 
    $stmt->store_result(); 
    $stmt->bind_result($count); 

    while ($stmt->fetch()) { 
     echo $count; 
    } 

echo $count總是返回1,但我有幾十個記錄...

什麼是錯的?

由於

+1

這是因爲DISTINCT,並可能傳遞一個唯一的電子郵件地址。 –

+0

但是,如果我直接在數據庫上查詢,工作正常... –

回答

2

綁定是not allowed列名(或表名)。您的查詢未正確執行。您需要直接傳遞該字段的名稱。

$stmt = $conn->prepare("SELECT COUNT(DISTINCT(email)) FROM contatos"); 
+0

它堅持返回1 ....( –

+0

這很奇怪...嘗試'選擇'字段'電子郵件',而不是'COUNT( )',看看它會返回哪個郵件...並且你可以從那裏開始弄清楚什麼是錯誤的。你確定你在同一個主機上選擇了同一個數據庫嗎? – ishegg

+0

是的,是同一個數據庫...我是另外解決這個問題:我只使用'SELECT DISTINCT(email)FROM contatos',使用'$ stmt-> get_result()'和'echo $ result-> num_rows;' –