Вывод данных из MySQL

max74max

Новичок
Здравствуйте.
Помогите, пожалуйста, разобраться.

Есть таблица с названием uroki

| id |creator | razdel | text_uroka

| 1 | admin | 1 | текст
| 2 | admin | 1 | текст
| 3 | moder | 2 | текст
| 4 | moder | 2 | текст
| 5 | moder | 3 | текст
| 6 | admin | 4 | текст
| 7 | admin | 4 | текст
| 8 | admin | 4 | текст
| 9 | admin | 5 | текст

Так я вывожу общее количество уроков для пользователя admin

PHP:
$creator = "admin";
$result = $mysqli->query("SELECT id FROM `uroki` WHERE creator = '".$creator."'");
$calc = $result->num_rows;
echo $calc;
Но мне нужно вывести для пользователя admin значение того раздела, который содержит наибольшее количество уроков.
Получается, что раздел 1 имеет 2 урока, раздел 4 имеет 3 урока, а раздел 5 имеет 1 урок.
Значит нужно вывести значение 3
Как это можно сделать?
 

WMix

герр M:)ller
Партнер клуба
както так
PHP:
$stmt = $mysqli->prepare("
  SELECT razel
  FROM uroki
  WHERE creator = ?
  GROUP BY razel
  ORDER BY COUNT(*) DESC
  LIMIT 1
");

$stmt->bind_param("s", "admin");
$stmt->execute();
$result = $stmt->get_result();
prinr_r($result->fetch_assoc());
тут пример как правильно создавать запросы, с переменными
так писать отучай себя сразу
 
Последнее редактирование:

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Есть вероятность получить дыру в своем приложении
 

Фанат

oncle terrible
Команда форума
Есть вероятность получить дыру в своем приложении
вот ты совершенно не понимаешь психологию.
дырами их пугать бесполезно. ну знаешь же что он напишет тебе в ответ - "у миня все для внутриннива пользавания".
Он же тебе сам ответ подсказывает - приведет к ошибке
что кстати и является корректным ответом, потому что твоя дыра - это только частный случай этой ошибки.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ну, кому как, по мне дырка страшнее получить notice/warning, как-то так)))
 

Фанат

oncle terrible
Команда форума
Ну, кому как, по мне дырка страшнее получить notice/warning, как-то так)))
да при чем здесь нотис-то.
у тебя ошибка запроса нотис что ли выдает?

ну и надо все-таки писать не "как по мне", а учитывать контекст вопроса
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Надо, пиши. Я буду писать так, как считаю нужным я, все понятно?

Имел в виду я, да, ошибку не уровня синтаксиса. Но докопался почему-то ты до этого именно.
 

max74max

Новичок
А в чем разница таких кавычек ' таких " и таких ` ?
Какие нужно использовать и в каких случаях?
 

Фанат

oncle terrible
Команда форума
Я буду писать так, как считаю нужным я, все понятно?
Бох ты мой, какие страсти. Ну пиши-пиши. Главное чтобы не получилось как в том анекдоте :)
У них просто не развито еще чувство опасности, "дыры" в их понимании это что-то далёкое. "я сначала научусь делать, а потом буду защищаться", "это внутренняя сеть, ломать некому" - это стандартные ответы, когда начинаешь проповедовать про инъекции.
Имел в виду я, да, ошибку не уровня синтаксиса
А какую?
Нежуели непонятно, что ошибки, вызванные данными в запросе, и инъекции - это явления одного порядка? А точнее, инъекция - частный случай выхода за рамки предусмотренного синтаксиса.
То есть в общем случае, если запрос писать запрос неправильно, то он поломается. С менее фатальными последствиями в виде ошибки, или более фатальными - инъекции.
 

Фанат

oncle terrible
Команда форума
А в чем разница таких кавычек ' таких " и таких ` ?
Какие нужно использовать и в каких случаях?
двойные кавычки в запросах mysql не используются
в одинарных кавычках в mysql пишутся строки
в косых кавычках пишутся идентификаторы - имена полей и таблиц
переменные РНР, как выше написал герр Мюллер, прямо в запрос не пишутся вообще никогда. ну кроме некоторых исключительных случаев.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
горячие масковские парни 🤣

@max74max ты Фаната слушай, он гуру в этих вопросах для новичков, тебе ж надо разбраться чтобы на работу взяли, вот это важный вопрос, будут проверять на собеседованиях (ну, я всегда проверяю),
а на якодзун не обращай внимания
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Бох ты мой, какие страсти. Ну пиши-пиши. Главное чтобы не получилось как в том анекдоте :)
У них просто не развито еще чувство опасности, "дыры" в их понимании это что-то далёкое. "я сначала научусь делать, а потом буду защищаться", "это внутренняя сеть, ломать некому" - это стандартные ответы, когда начинаешь проповедовать про инъекции.

А какую?
Нежуели непонятно, что ошибки, вызванные данными в запросе, и инъекции - это явления одного порядка? А точнее, инъекция - частный случай выхода за рамки предусмотренного синтаксиса.
То есть в общем случае, если запрос писать запрос неправильно, то он поломается. С менее фатальными последствиями в виде ошибки, или более фатальными - инъекции.
Спасибо, милейший, что написал еще раз о том же, о чем и я. Только я написал это в одну строчку, а ты растянул не пойми зачем на главу.

Я представляю к чему ведет написание без плейсхолдеров. В начале у него как раз будут эти самые пресловутые "ошибки", если какая-то кавычка напрямую попадет в запрос не в том месте. А далее уже как ты и писал - фатальнее этого инъекция.
 

max74max

Новичок
Спасибо, милейший, что написал еще раз о том же, о чем и я. Только я написал это в одну строчку, а ты растянул не пойми зачем на главу.

Я представляю к чему ведет написание без плейсхолдеров. В начале у него как раз будут эти самые пресловутые "ошибки", если какая-то кавычка напрямую попадет в запрос не в том месте. А далее уже как ты и писал - фатальнее этого инъекция.
А разве это не решается таким образом?

PHP:
$dannye= $mysqli->real_escape_string($dannye);
//Далее запись в базу
 

WMix

герр M:)ller
Партнер клуба
А разве это не решается таким образом?
как ты думаешь, зачем из php убрали расширение mysql, зачем эти placeholder, если есть real_escape_string?
нет не решает!

обрати внимание на этот комент, он как раз о твоем вопросе
вот ты совершенно не понимаешь психологию.
дырами их пугать бесполезно. ну знаешь же что он напишет тебе в ответ - "у миня все для внутриннива пользавания".
Он же тебе сам ответ подсказывает - приведет к ошибке
что кстати и является корректным ответом, потому что твоя дыра - это только частный случай этой ошибки.
 

AnrDaemon

Продвинутый новичок
@c0dex новичку объяснение в одну строку ничего не даст. Тем более такое абстрактное, как "получить дыру". Они даже само понятие "дыра" ещё не понимают.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@c0dex новичку объяснение в одну строку ничего не даст. Тем более такое абстрактное, как "получить дыру". Они даже само понятие "дыра" ещё не понимают.
Так, стоп, падажжжи. Человек в 21м веке, пользующийся мобилами, ноутами и прочей электроникой и, на минуточку, пришедший кодить и не знает о "дырах" в приложениях/безопасности чего-либо? Прости не поверю. К тому же обычно после чего-то краткого можно задать встречный вопрос.
 

Фанат

oncle terrible
Команда форума
Так, стоп, падажжжи. Человек в 21м веке, пользующийся мобилами, ноутами и прочей электроникой и, на минуточку, пришедший кодить и не знает о "дырах" в приложениях/безопасности чего-либо? Прости не поверю. К тому же обычно после чего-то краткого можно задать встречный вопрос.
господи, да из них примерно каждый второй тупо форумом пользоваться не умеет. вспомни скольким из них надо на пальцах рассказывать как нажать кнопочку чтобы код нормально оформить. Ты сильно переоцениваешь их технический бэкграунд :)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Стараюсь видеть в людях хорошее)))
 
Сверху