【问题标题】:How to count number of the same data in a database in PHP如何在PHP中计算数据库中相同数据的数量
【发布时间】:2018-04-17 02:29:17
【问题描述】:

我正在尝试计算数据库中与通过 POST 方法获取的电子邮件地址相同的电子邮件地址的数量。但似乎这段代码无法正确计算数字,而是返回一个空格。我的 PHP 代码有问题吗?感谢您抽出宝贵时间。

<?php
  require_once('PHP/function.php');

  $mail = $_POST['email'];


  $sql = "select count(*) as num from `xxxx` where `mail` = '{$mail}' ;";
  $count = mysqlPDO($sql);
  $count = $count[0]["count(*)"];

  echo "number of the same email adress:\n".$count;
?>

function.php 在下面;

<?php
    function mysqlPDO($sql){

        $dsn = 'mysql:dbname=aaaaa;host=localhost';

    try{
        $dbh = new PDO($dsn,'xxx','zzzzzzz');
        $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        $stmt = $dbh -> query("SET NAMES utf8;");
        $stmt = $sth= $dbh->prepare($sql);
        $sth->execute(array());
        $result=$sth->fetchall(PDO::FETCH_ASSOC);

        }catch (PDOException $e){
          $result = "error";
        }

        return $result;

    }

?>

【问题讨论】:

  • $count = $count[0]["count(*)"]; 更改为$count = $count[0]["num"];
  • 您已经为count(*) as num创建了别名,只需访问索引num
  • 如果你只是直接在$sql中注入变量,那么拥有-&gt;prepare()d有什么用,就像用撬棍敲钉子一样
  • 感谢您的建议!我试过'$count = $count[0]["num"];'访问计数,但似乎效果不佳......
  • 您能否在$count = mysqlPDO($sql); 之后添加var_dump($count); 并告诉我们您得到了什么。谢谢

标签: php sql database pdo count


【解决方案1】:

我不熟悉 PDO 做事的方法。但根据我在执行 SELECT 语句后所做的研究,$sth-&gt;fetchColumn(); 应该返回与 $_POST 电子邮件地址匹配的行数。

$count = $sth->fetchColumn();

【讨论】:

  • 感谢您的 cmets!我试过了,但错误消息显示Fatal error: Call to a member function rowCount() on null in xxx.php on $count = $sth-&gt;rowCount();
  • 哎呀,我想我没有把你的代码以正确的方式......我怎样才能在我的代码中添加你的代码?谢谢!
  • @Tak 尝试用 fetchColumn() 替换 rowCount() 我知道它对行数没有意义,但根据另一篇文章,我读到 rowCount() 只返回已删除的行。 fetchColumn() 应该返回 SELECT 语句中的行数
  • 谢谢!嗯还是不行。我把$count = $sth-&gt;fetchColumn(); 放在主php 文件(不是function.php)上。我想我应该把它放在不同的地方......我应该在哪里添加它?
  • @Tak 您应该在运行 exec() 函数后尝试将语句放入 function.php 中。这行得通吗?
猜你喜欢
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-20
  • 2012-02-03
相关资源
最近更新 更多