Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
SQL запрос для получения URL вложения по имени?
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ).
SQL запрос для получения URL вложения по имени?
Подскажите SQL запрос для получения URL файла к номеру сообщения с определенным именем?
Т.е. в теме первое сообщение имеет вложенную картинку, например cover.jpg или cover.gif или cover.png
Как мне получить ее URL, что бы вставить в темплайте позже?
Т.е. в теме первое сообщение имеет вложенную картинку, например cover.jpg или cover.gif или cover.png
Как мне получить ее URL, что бы вставить в темплайте позже?
-
- Поддержка
- Сообщения: 12420
- Стаж: 12 лет 8 месяцев
- Благодарил (а): 166 раз
- Поблагодарили: 2473 раза
Re: SQL запрос для получения URL вложения по имени?
Если в простейшем варианте:
Код: Выделить всё
$sql = 'SELECT attach_id
FROM ' . ATTACHMENTS_TABLE . '
WHERE real_filename = \'' . $filename . '\'';
Код: Выделить всё
$download_link = append_sid("{$phpbb_root_path}download/file.$phpEx", 'id=' . $attachment['attach_id']);
Re: SQL запрос для получения URL вложения по имени?
а где тут указание на номер темы?? Ну как бы надо сослаться на первое сообщение темы, зная ее номер $row['topic_id']? Как правильно сделать?
Re: SQL запрос для получения URL вложения по имени?
Вот так сделал для имени картинки poster.*
Код: Выделить всё
$sql3 = 'SELECT a.attach_id, a.post_msg_id, a.physical_filename, a.real_filename, a.extension
FROM ' . ATTACHMENTS_TABLE . ' a, ' . TOPICS_TABLE . ' t
WHERE a.topic_id ='.$row['topic_id'].'
AND a.real_filename LIKE \'poster.%\'
AND a.post_msg_id = t.topic_first_post_id';
$result_cover_attach = $this->db->sql_query_limit($sql3, 1);
while ($row_cover_attach = $this->db->sql_fetchrow($result_cover_attach))
{
$pictures_file = generate_board_url() ."/download/file.php?id=" . $row_cover_attach['attach_id'];
}
$this->db->sql_freeresult($result_cover_attach);
-
- Former team member
- Сообщения: 12113
- Стаж: 17 лет 1 месяц
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 41 раз
- Поблагодарили: 1716 раз
Re: SQL запрос для получения URL вложения по имени?
Потенциальная дырка. Кури функцию sql_escape
Пример использования
Код: Выделить всё
$sql_where = "username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'";
Код: Выделить всё
$sql_where = (strpos($author, '*') !== false) ? ' username_clean ' . $db->sql_like_expression(str_replace('*', $db->get_any_char(), utf8_clean_string($author))) : " username_clean = '" . $db->sql_escape(utf8_clean_string($author)) . "'";
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
- Former team member
- Сообщения: 3468
- Стаж: 9 лет 11 месяцев
- Благодарил (а): 41 раз
- Поблагодарили: 830 раз
Re: SQL запрос для получения URL вложения по имени?
Sheer, а можно поподробнее про дырку?
В запросе выше ведь в LIKE данные пользовательского ввода не подставляются.
Из всех данных туда только ID темы попадает, перед которым можно
В запросе выше ведь в LIKE данные пользовательского ввода не подставляются.
Из всех данных туда только ID темы попадает, перед которым можно
(int)
поставить.-
- Former team member
- Сообщения: 12113
- Стаж: 17 лет 1 месяц
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 41 раз
- Поблагодарили: 1716 раз
Re: SQL запрос для получения URL вложения по имени?
Чё-то я не понял этого
там по идее должно быть
Ну в общем, если в имени будет апостроф, то это приведет к фатальной ошибке sql. Может и не дыра, но кавычки в любом случае экранировать надо.
Код: Выделить всё
AND a.real_filename LIKE \'poster.%\'
$poster
Ну в общем, если в имени будет апостроф, то это приведет к фатальной ошибке sql. Может и не дыра, но кавычки в любом случае экранировать надо.
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
- Former team member
- Сообщения: 3468
- Стаж: 9 лет 11 месяцев
- Благодарил (а): 41 раз
- Поблагодарили: 830 раз
Re: SQL запрос для получения URL вложения по имени?
Sheer, это не переменная, а префикс.
Автор ищет файлы с префиксом
Автор ищет файлы с префиксом
poster.
, прикреплённые к первым сообщениям тем.Re: SQL запрос для получения URL вложения по имени?
уху
такой вопрос
некоторые пишут сразу SELECT *
такой вопрос
вот это дело сильно нагружает сервер или лучше ограничиться только нужными полями?
некоторые пишут сразу SELECT *
-
- Former team member
- Сообщения: 12113
- Стаж: 17 лет 1 месяц
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 41 раз
- Поблагодарили: 1716 раз
Re: SQL запрос для получения URL вложения по имени?
Некоторые сразу пишут неправильно или указывают * , если действительно нужна выборка по всем полям.
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Re: SQL запрос для получения URL вложения по имени?
какой то бессмысленный ответ. вроде просто спросилНекоторые сразу пишут
нельзя просто сказать да или нет?
-
- Former team member
- Сообщения: 12113
- Стаж: 17 лет 1 месяц
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 41 раз
- Поблагодарили: 1716 раз
Re: SQL запрос для получения URL вложения по имени?
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.