Intereting Posts
Как узнать, какой пользователь запускает текущий PHP-скрипт? cURL: просто пытаюсь загрузить страницу Используйте PHP или Flash для извлечения кадра из видео Архитектура плагинов в PHP Испанские символы не отображаются правильно Выбрать узел на основе атрибута и изменить поднод Разбейте количество (число) в записи и установите их как массив для выбора опций как получить название категории текущего продукта (на странице сведений о продукте) в magento Используйте openssl_encrypt для замены Mcrypt для шифрования 3DES-ECB Получите DATETIME в php и отправьте его в MySQL для согласования транзакций Ошибка Swift-Mailer, «Адрес в почтовом ящике не соответствует RFC" Сомнения в отношении Yii2 RBAC Создать объект Date в PHP для дат до 1970 года в определенном формате jQuery форма представления формы не POSTING значения Стратегия кэширования, когда кеширование становится бессмысленным?

MYSQL возвращает пустой результат в PHP

У меня есть следующая таблицаCountry

country clicks ------- ------ 0 222 66 34 175 1000 45 650 

И я использую следующий оператор MYSQL, чтобы получить рейтинг любой страны на основе столбца кликов (всего один результат)

 SELECT COUNT(*) rank FROM countryTable a JOIN countryTable b ON a.clicks <= b.clicks WHERE a.country = 45 

Вышеупомянутое вернет «2». Затем в моем php-коде я пытаюсь получить доступ к значению ранга с помощью

 $row = mysql_fetch_array($result) or die(mysql_error()); echo $row['rank']; 

Но это не возвращает никакого результата, если страна является номером один. т.е. a.country = 175

Если вы ищете рейтинг, используйте это:

 SELECT @rownum := @rownum + 1 AS num, t.country, t.clicks FROM countryTable t, (SELECT @rownum := 0) r ORDER BY t.clicks DESC 

результат

  |  NUM |  СТРАНА |  CLICKS |
 --------------------------
 |  1 |  175 |  1000 |
 |  2 |  45 |  650 |
 |  3 |  0 |  222 |
 |  4 |  66 |  34 | 

Смотрите это в действии

Соединение ON – это объединение между столбцами, а не сравнение.

ОБНОВЛЕНО

 SELECT COUNT(*)+1 rank FROM countryTable WHERE clicks > (SELECT clicks FROM countryTable WHERE country = 45) 

Рассуждение: поиск ранга означает поиск количества записей с кликами> заданный клик.

Поэтому для 175 существует 0 страна с лучшим кликом => ранг 1, страна 45, 1 страна с лучшим кликом => ранг 2

PHP

 $result = mysql_query("....") $row = mysql_fetch_array($result) ... 

Обычно это должно работать, если у вас не возникла проблема с подключением к серверу. Здесь вы должны использовать свое умение отладки. Сделайте var_dump ($ result), чтобы увидеть, возвращает ли он false, если да, то это проблема подключения (проверьте mysql_connect или что-то еще)

@PutraKg Я думаю, вы можете закрыть этот вопрос, потому что я ответил на него в этом сообщении. MYSQL не возвращает результат в PHP, когда его спрашивают только о первом рейтинге 😉