Подсчитайте строки с одинаковым идентификатором в php

Я пытаюсь подсчитать строки с одинаковым идентификатором

|curs_code|cursistnr|Mark|Payed| C# 20 6 50 PHP 25 8 100 C# 8 7 100 

выход должен быть

C #, 2 раза

я пробовал

 $sql = "SELECT count(curs_code) as 'count_of_curs' FROM cursus where curs_code='$id'"; $query = $magazijn->query($sql); return $query->fetchAll()); 

но дает мне этот результат:

 C# array (size=1) 0 => array (size=2) 'count_of_curs' => string '1' (length=1) 0 => string '1' (length=1) PHP array (size=1) 0 => array (size=2) 'count_of_curs' => string '1' (length=1) 0 => string '1' (length=1) 

ваша мысль об этом?

SELECT curs_code, count (*) как 'count_of_curs' FROM cursus, где curs_code = '$ id' group by curs_code

Удалите место, если хотите весь список.

Похоже, вопрос, который вы задаете, – «Почему выражение COUNT(curs_code) возвращает значение 1, когда я ожидаю значение 2?»

Я думаю, что это означает, что два вхождения C# которые кажутся вам одинаковыми, на самом деле являются разными значениями. Вероятно, это связано с «скрытыми» символами пробела в одном из значений.

Чтобы вернуть все значения curs_code , содержащие строку C# , и «увидеть» то, что на самом деле хранится, выполните такой запрос:

 SELECT curs_code , HEX(curs_code) , CHAR_LENGTH(curs_code) FROM cursus WHERE curs_code LIKE '%C#%' 

В качестве демонстрации:

  SELECT cc , HEX(cc) , CHAR_LENGTH(cc) FROM ( SELECT 'C#' AS cc UNION ALL SELECT 'C#\t' UNION ALL SELECT 'C#\0' ) c WHERE cc LIKE '%C#%' cc HEX(cc) CHAR_LENGTH(cc) --- ------- --------------- C# 4323 2 C# 432309 3 C# 432300 3 

Если вы просто хотите найти «повторяющиеся» значения curs_code:

  SELECT c.curs_code , COUNT(1) AS count_of_curs_code FROM cursus GROUP BY c.curs_code HAVING COUNT(1) > 1 ORDER BY c.curs_code