2017-08-24 80 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;' –