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, что бы вставить в темплайте позже?
-
- Поддержка
- Сообщения: 12752
- Стаж: 13 лет 8 месяцев
- Благодарил (а): 159 раз
- Поблагодарили: 2276 раз
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
- Стаж: 18 лет 2 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 36 раз
- Поблагодарили: 1526 раз
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
- Стаж: 11 лет
- Благодарил (а): 39 раз
- Поблагодарили: 792 раза
Re: SQL запрос для получения URL вложения по имени?
Sheer, а можно поподробнее про дырку?
В запросе выше ведь в LIKE данные пользовательского ввода не подставляются.
Из всех данных туда только ID темы попадает, перед которым можно
В запросе выше ведь в LIKE данные пользовательского ввода не подставляются.
Из всех данных туда только ID темы попадает, перед которым можно
(int)
поставить.-
- Former team member
- Сообщения: 12113
- Стаж: 18 лет 2 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 36 раз
- Поблагодарили: 1526 раз
Re: SQL запрос для получения URL вложения по имени?
Чё-то я не понял этого
там по идее должно быть
Ну в общем, если в имени будет апостроф, то это приведет к фатальной ошибке sql. Может и не дыра, но кавычки в любом случае экранировать надо.
Код: Выделить всё
AND a.real_filename LIKE \'poster.%\'
$poster
Ну в общем, если в имени будет апостроф, то это приведет к фатальной ошибке sql. Может и не дыра, но кавычки в любом случае экранировать надо.
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
- Former team member
- Сообщения: 3468
- Стаж: 11 лет
- Благодарил (а): 39 раз
- Поблагодарили: 792 раза
Re: SQL запрос для получения URL вложения по имени?
Sheer, это не переменная, а префикс.
Автор ищет файлы с префиксом
Автор ищет файлы с префиксом
poster.
, прикреплённые к первым сообщениям тем.Re: SQL запрос для получения URL вложения по имени?
уху
такой вопрос
некоторые пишут сразу SELECT *
такой вопрос
вот это дело сильно нагружает сервер или лучше ограничиться только нужными полями?
некоторые пишут сразу SELECT *
-
- Former team member
- Сообщения: 12113
- Стаж: 18 лет 2 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 36 раз
- Поблагодарили: 1526 раз
Re: SQL запрос для получения URL вложения по имени?
Некоторые сразу пишут неправильно или указывают * , если действительно нужна выборка по всем полям.
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Re: SQL запрос для получения URL вложения по имени?
какой то бессмысленный ответ. вроде просто спросилНекоторые сразу пишут
нельзя просто сказать да или нет?
-
- Former team member
- Сообщения: 12113
- Стаж: 18 лет 2 месяца
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 36 раз
- Поблагодарили: 1526 раз
Re: SQL запрос для получения URL вложения по имени?
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.