2014-09-03 2 views
3

Я пытаюсь сделать подсчет строк, я хочу подсчитать строку (nummer), и если есть более 1 строки с тем же номером, то эхо. но независимо от того, сколько строк у меня в Tabel, это только не returs 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

вы используете '$ строк = $ result-> fetchAll;' отсутствуют скобки: '$ строки = $ result-> fetchAll (); ' – matteospampani

ответ

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 для числа найденных строк.

+0

cool, thanks :) – user3272367

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

спасибо за ваш ответ, извините, я не могу дать голосование, мне нужно больше репутации – user3272367

+0

@ user3272367 Теперь вы можете поддержать этот ответ –

0

Использование PDOStatement::fetchColumn(). Он полезен для «одностолбцовых» результатов (что относительно часто производится по таким запросам, как 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"; 
+1

спасибо за ваш ответ, извините, что я не могу дать голосование вверх, мне нужно больше репутации – user3272367

1

просто использовать fetch() вместо fetchAll()

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

спасибо за ваш ответ, я так я не могу дать голосование, мне нужно больше репутации – user3272367

+0

большое спасибо :) – user3272367