我正在尝试进行行计数,我想计算一行(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";
}
答案 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";