За последние 24 часа нас посетили 17483 программиста и 1719 роботов. Сейчас ищут 1567 программистов ...

Вывод количества одинаковых имён из бд через php

Тема в разделе "PHP и базы данных", создана пользователем Fox-, 31 май 2022.

  1. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    Здравствуйте, имеются данные в бд
    Код (Text):
    1.  
    2. ------------------------------------------------------------------------------------------------------------------------------------ |
    3. |  id     | users     |    cn                                                                                                                            |
    4. |    1    |  vova     |  b2bdce46f9b58fea296fe1cc09c949ad53149b8e46c9f6b6ac3007cc95a37f53         |
    5. |    2    |  vova2   |  456456                                                                                                                       |
    6. |    3    |  vova3    |  b2bdce46f9b58fea296fe1cc09c949ad53149b8e46c9f6b6ac3007cc95a37f53         |                |          |                                                                                                                                                     |
    7. --------------------------------------------------------------------------------------------------------------------------------------
    хочу вытащить кол-во одинаковых значений из столбца cn и в переменную занести

    пытался так
    Код (Text):
    1.  
    2. $db->query("SELECT cn, count(*) as rates
    3.            FROM " . PREFIX . "_logs
    4.             WHERE cn <> 'b2bdce46f9b58fea296fe1cc09c949ad53149b8e46c9f6b6ac3007cc95a37f53'
    5.             GROUP BY cn
    6.             ORDER BY rates"
    7.           );
    8.   echo "number:\n".$count;
    должен был вывести 2, но нет
    не до конца понял, как работает, . PREFIX . "_logs не понял что это...

    с работой в БД mysql опыт небольшой, пример кода в нете нашел
     
  2. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Код (Text):
    1.  
    2. SELECT count(*) as `rates`
    3. FROM `tablename`
    4. WHERE `cn` = 'b2bdce46f9b58fea296fe1cc09c949ad53149b8e46c9f6b6ac3007cc95a37f53';
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    в php точка работает как склейка строк
    я не понял смысла в твоём WHERE cn <> 'блаблабла'. именно он отсекает от тебя значения, которых два.
    ты просто скопировал что-то наудачу? убунту, это ты? )))
     
  4. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    1. ------------------------------------------------------------------------------------------------------------------------------------ |
    2. | id | users | cn |
    3. | 1 | vova | b2bdce46f9b58fea296fe1cc09c949ad53149b8e46c9f6b6ac3007cc95a37f53 |
    4. | 2 | vova2 | 456456 |
    5. | 3 | vova3 | b2bdce46f9b58fea296fe1cc09c949ad53149b8e46c9f6b6ac3007cc95a37f53 |
    6. -----------------------------------------------------------------------------------------

    спасибо, а как из вышеприведенной таблицы получить кол-во юзеров (в числовом значении) с данными b2bdce46f9b58fea296fe1cc09c949ad53149b8e46c9f6b6ac3007cc95a37f53 которые находятся в стобике cn через php
    в таблице теперь нет столбца rates, есть только id,user,cn
     
    #4 Fox-, 1 июн 2022
    Последнее редактирование: 1 июн 2022
  5. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    пытался так:

    Код (Text):
    1. $count = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `cn` = 'mas'"),0);
    2. echo $count;
    но у меня mysqli а не mysql, как переписать этот код для mysqli ?
     
  6. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Так не пойдет.
    Надо хоть что-то почитать. Например вот - https://www.php.net/manual/ru/mysqli.quickstart.dual-interface.php
    Желательно раздельно - про php часть и mysql
    Освойте phpMyAdmin
     
  7. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    в базу данных данные заносить умею, считывать тоже, но с чем-то более сложным траблы, хз как, пусть будет так
    Код (Text):
    1.  
    2. $count = mysqli_query($mysqli,"SELECT COUNT(*) FROM `users` WHERE `cn` = 'mas'");
    3. echo $count;
    холодно иль горяче?
     
  8. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Не знаю что вам ответить.
    В приведенной вами таблице ячейки с 'mas' я не вижу.
    Попробуйте развернуть мысль - что именно вы пытаетесь подсчитать, и где оно в таблице.
     
  9. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    вместо mas любое слово в примере b2bdce46f9b58fea296fe1cc09c949ad53149b8e46c9f6b6ac3007cc95a37f53
     
  10. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    ОК
    PHP:
    1. <pre>
    2. <?php
    3.     $mysql = new mysqli('host', 'login', 'password', 'database');
    4.  
    5.     $result_set = $mysql->query("SELECT count(*) as `rates`
    6.     FROM `tablename`
    7.     WHERE `cn` = 'b2bdce46f9b58fea296fe1cc09c949ad53149b8e46c9f6b6ac3007cc95a37f53';");
    8.  
    9.     $results = array();
    10.  
    11.     while ($row = $result_set->fetch_assoc())
    12.      {
    13.         $results[] = $row;
    14.      }
    15.  
    16. print_r ($results);
    17. ?>
     
    Fox- нравится это.
  11. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    :oops: просто пытаюсь подсчитать кол-во записей b2bdce46f9b58fea296fe1cc09c949ad53149b8e46c9f6b6ac3007cc95a37f53 из столбца cn и в переменную занести для дальнейшего сравнения if (b2bdce46f9b58fea296fe1cc09c949ad53149b8e46c9f6b6ac3007cc95a37f53==$var)
    :oops:
    --- Добавлено ---
    Код (Text):
    1. $result_set = $mysql->query("SELECT COUNT(*) FROM users WHERE cn = 'b2bdce46f9b58fea296fe1cc09c949ad53149b8e46c9f6b6ac3007cc95a37f53'");
    2.     $results = array();
    3.     while ($row = $result_set->fetch_assoc())
    4.      {
    5.         $results[] = $row;
    6.      }
    7. print_r ($results);
    что-то вроде этого, но я не так что-то намудрил, не работает
    хелп в последний раз плиз :rolleyes:
     
  12. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Не вижу в коде подключения к базе
     
  13. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    Код (Text):
    1. header('Content-Type: text/html; charset=utf-8');
    2.  
    3.     $server = "localhost"; // имя хоста (уточняется у провайдера), если работаем на локальном сервере, то указываем localhost
    4.     $username = "nameuser7";
    5.     $password = "Test";
    6.     $database = "namebd7";
    7.    
    8.  
    9.     $mysqli = new mysqli($server, $username, $password, $database);
    10.  
    11.  
    12.     if ($mysqli->connect_errno) {
    13.         die("<p><strong>Ошибка подключения к БД</strong></p><p><strong>Код ошибки: </strong> ". $mysqli->connect_errno ." </p><p><strong>Описание ошибки:</strong> ".$mysqli->connect_error."</p>");
    14.     }
    15.  
    16.  
    17.     $mysqli->set_charset('utf8');
    --- Добавлено ---
    выше код подключения
     
  14. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Упростите запрос - удостоверьтесь, что у скрипта есть подключение к базе.
    Например
    Код (Text):
    1. SELECT 'test' as `result`
    Если выведет что-то вроде
    Код (Text):
    1. Array
    2. (
    3.     [0] => Array
    4.         (
    5.             [result] => test
    6.         )
    7. )
    Значит со скриптом всё в порядке и проблема с запросом.
    Отладьте его в phpMyAdmin
     
  15. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    я ваш mysql запрос изменил, без столбца rates сделал, из за этого не работает
    --- Добавлено ---
    выполнил код
    Код (Text):
    1.  
    2. $query = $mysqli->query("SELECT * FROM users WHERE login='{$name}'");
    3.                      while ( $row = mysqli_fetch_assoc($query) )
    4.                     {                      
    5.                     $b= $row['b'];
    6.                     }
    7. echo $b;
    работает
     
  16. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Это псевдоним для вывода результата функции. Верните как было
    --- Добавлено ---
    Если результатов будет больше, чем один, то выведет только последний
     
  17. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    Код (Text):
    1. $result_set = $mysql->query("SELECT count(*) as `rates`
    2.     FROM `users`
    3.     WHERE `cn` = 'b2bdce46f9b58fea296fe1cc09c949ad53149b8e46c9f6b6ac3007cc95a37f53';");
    4.     $results = array();
    5.     while ($row = $result_set->fetch_assoc())
    6.      {
    7.         $results[] = $row;
    8.      }
    9. print_r ($results);
    не работает, rates столбец создовать нужно иили нет ? Если да, то какое значение там должно быть.

    Этот запрос выдает 2 как нужно, если через phpAdmin
    Код (Text):
    1. SELECT COUNT(*) FROM users WHERE cn = 'b2bdce46f9b58fea296fe1cc09c949ad53149b8e46c9f6b6ac3007cc95a37f53'
     
  18. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Нет.
    Это не столбец
     
  19. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    мне нужно именно это
    Код (Text):
    1. SELECT COUNT(*) FROM users WHERE cn = 'b2bdce46f9b58fea296fe1cc09c949ad53149b8e46c9f6b6ac3007cc95a37f53'
    sql запрос смог собрать, но как c php быть не знаю...
     
  20. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Например обратить внимание на
    1. print_r ($results);
    Затем попробовать выполнить пример как есть. Внимательно рассмотрев выводимое, и только потом что-то в примере начинать менять, сравнивая с предыдущим
    --- Добавлено ---
    Возможно, так вам буде проще
    PHP:
    1. .....
    2.     $result_set = $mysql->query("SELECT 'test'");
    3.  
    4.     $results = array();
    5. while ($row = $result_set->fetch_row()) //_assoc())
    6.     {
    7.         $results[] = $row;
    8.     }
    9.  
    10.     print_r ($results);
    11. ?>
     
  21. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    мляяя ... я сразу не заметил, вы же $mysql->query написали...
    а нужно $mysqli->query :D
    --- Добавлено ---
    результат Array ( [0] => Array ( [rates] => 2 ) )
    но как занести в переменную только основной результат 2
    --- Добавлено ---
    Спасибо, сам бы не разобрался
     
  22. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    echo $resuts[0]['rates'];
     
    Fox- нравится это.
  23. Fox-

    Fox- Активный пользователь

    С нами с:
    11 янв 2018
    Сообщения:
    94
    Симпатии:
    3
    Спасибо еще раз