计算行并回显结果

时间:2014-09-03 07:00:18

标签: php mysql pdo

我正在尝试进行行计数,我想计算一行(nummer),如果有超过1行的数字相同,那么echo。但不管我的表格中有多少行,它只会重新开始0

      $nummer = $_GET['nummer'];       

      $pdo = Database::connect();
      $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);    

      $result = $pdo->prepare("select count(*) from rum where nummer=:n");
      $result->bindParam(':n', $nummer, PDO::PARAM_INT);
      $result->execute();

      $rows = $result->fetchAll;
    if(count($rows) >1) {
    echo "1";}
    else {
    echo "0";
      } 

4 个答案:

答案 0 :(得分:1)

以下陈述

$result = $pdo->prepare("select count(*) from rum where nummer=:n");

将始终返回带有计数的一行,因此执行

$rows = $result->fetchAll; 

总会返回一个。

你可以这样做

$result = $pdo->prepare("select count(*)  as tot from rum where nummer=:n");
....
....
$rows = $result->fetchAll(); 
if($rows["tot"] > 0 ){
  echo 'something'
}else{
  echo 'something else'
}

答案 1 :(得分:1)

只需使用fetch()代替fetchAll()

$rows = $result->fetch();
if($rows[0]) >1) {
   echo "1";
} else {
   echo "0";
} 

答案 2 :(得分:0)

看起来你有两个错误。

第一个:如果您要查询COUNT(*) - 您将获得许多行。例如:您将返回一个名为COUNT(*)的字段,其中一行包含找到的行数。

如果您更换

$result = $pdo->prepare("select count(*) from rum where nummer=:n");

$result = $pdo->prepare("select * from rum where nummer=:n");

第二个: 取代

$rows = $result->fetchAll;

使用

$rows = $result->fetchAll();

fetchAll()不是属性,而是方法。

另一种方式是您的查询,但命名字段( MySQL AS关键字)并在之后调用$rows = $result->fetch();并检查$rows->fieldName找到的数量行。

答案 3 :(得分:0)

使用PDOStatement::fetchColumn()。它对" one-column"非常有用。结果集(通常由SELECT COUNT(...) FROM ...之类的查询产生)。例如:

$nummer = isset($_GET['nummer']) ? $_GET['nummer'] : null;

$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $pdo->prepare('SELECT COUNT(*) FROM rum WHERE (nummer = :n)');
$stmt->bindParam(':n', $nummer, PDO::PARAM_INT);
$stmt->execute();

$rows = $stmt->fetchColumn();

echo $rows > 1 ? "1" : "0";