Уважаемые пользователи!
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 | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ).
-
- phpBB 2.0.5
- Сообщения: 452
- Стаж: 8 лет 2 месяца
- Благодарил (а): 25 раз
- Поблагодарили: 7 раз
SQL запрос для получения URL вложения по имени?
Подскажите SQL запрос для получения URL файла к номеру сообщения с определенным именем?
Т.е. в теме первое сообщение имеет вложенную картинку, например cover.jpg или cover.gif или cover.png
Как мне получить ее URL, что бы вставить в темплайте позже?
Т.е. в теме первое сообщение имеет вложенную картинку, например cover.jpg или cover.gif или cover.png
Как мне получить ее URL, что бы вставить в темплайте позже?
-
- Поддержка
- Сообщения: 12457
- Стаж: 12 лет 9 месяцев
- Благодарил (а): 166 раз
- Поблагодарили: 2484 раза
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']);
-
- phpBB 2.0.5
- Сообщения: 452
- Стаж: 8 лет 2 месяца
- Благодарил (а): 25 раз
- Поблагодарили: 7 раз
Re: SQL запрос для получения URL вложения по имени?
а где тут указание на номер темы?? Ну как бы надо сослаться на первое сообщение темы, зная ее номер $row['topic_id']? Как правильно сделать?
-
- phpBB 2.0.5
- Сообщения: 452
- Стаж: 8 лет 2 месяца
- Благодарил (а): 25 раз
- Поблагодарили: 7 раз
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 лет 3 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 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
- Стаж: 10 лет
- Благодарил (а): 41 раз
- Поблагодарили: 831 раз
Re: SQL запрос для получения URL вложения по имени?
Sheer, а можно поподробнее про дырку?
В запросе выше ведь в LIKE данные пользовательского ввода не подставляются.
Из всех данных туда только ID темы попадает, перед которым можно
В запросе выше ведь в LIKE данные пользовательского ввода не подставляются.
Из всех данных туда только ID темы попадает, перед которым можно
(int)
поставить.-
- Former team member
- Сообщения: 12113
- Стаж: 17 лет 3 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 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
- Стаж: 10 лет
- Благодарил (а): 41 раз
- Поблагодарили: 831 раз
Re: SQL запрос для получения URL вложения по имени?
Sheer, это не переменная, а префикс.
Автор ищет файлы с префиксом
Автор ищет файлы с префиксом
poster.
, прикреплённые к первым сообщениям тем.-
- phpBB 2.0.5
- Сообщения: 452
- Стаж: 8 лет 2 месяца
- Благодарил (а): 25 раз
- Поблагодарили: 7 раз
Re: SQL запрос для получения URL вложения по имени?
уху
такой вопрос
некоторые пишут сразу SELECT *
такой вопрос
вот это дело сильно нагружает сервер или лучше ограничиться только нужными полями?
некоторые пишут сразу SELECT *
-
- Former team member
- Сообщения: 12113
- Стаж: 17 лет 3 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 41 раз
- Поблагодарили: 1716 раз
Re: SQL запрос для получения URL вложения по имени?
Некоторые сразу пишут неправильно или указывают * , если действительно нужна выборка по всем полям.
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
- phpBB 2.0.5
- Сообщения: 452
- Стаж: 8 лет 2 месяца
- Благодарил (а): 25 раз
- Поблагодарили: 7 раз
Re: SQL запрос для получения URL вложения по имени?
какой то бессмысленный ответ. вроде просто спросилНекоторые сразу пишут
нельзя просто сказать да или нет?
-
- Former team member
- Сообщения: 12113
- Стаж: 17 лет 3 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 41 раз
- Поблагодарили: 1716 раз
Re: SQL запрос для получения URL вложения по имени?
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.