прямые запросы к базе данных в битриксе делать нельзя!
Можно - если понимаете, что делаете.
Если "текст" в условии задачи - это html, и хранится в столбце DETAIL_TEXT , то поправить все элементы инфоблока с ID 36 можно запросом вроде:
UPDATE `b_iblock_element`
SET `DETAIL_TEXT`=REPLACE(`DETAIL_TEXT`, 'что-то', 'что-то новое')
WHERE `IBLOCK_ID`=36
Ближайший по скорости вариант через API - это GetList() и потом поштучный Update() каждого элемента, с параметром bUpdateSearch=false. Потому что Битрикс за годы так и не научился массовым апдейтам.
Если же оставите параметр по умолчанию, в true, то ждать результата будете крайне долго.
Андрей Еськов: с массивом не так просто.
Если у вас вывод статьи и вывод списка товаров по вёрстке развязаны, то пишете кусок кода в component_epilog.php ( но наверняка придётся ещё в шаблон вставить $component->SetResultCacheKeys(...) ).
Преимущством будет вывод только актуальных (доступных) товаров, не трогая закешированный вывод статьи.
В ином случае придётся писать в template.php и либо вырубать кеширование для статей, либо смириться с возможной неактуальностью товаров.
Создаёте глобальный фильтр, например
$GLOBALS['ITEM_FILTER'] = ['ID'=>[/*тут ваш список ID*/],];
В параметрах компонента для параметра FILTER_NAME ("Имя массива со значениями фильтра для фильтрации элементов") указываете ITEM_FILTER .
Будьте аккуратны со случаем, когда ваш список ID товаров - пуст.
А что вы называете реальным адресом?
Мне кажется, ошибка где-то в другом месте. #XXX# - это стандартная конструкция для строковых шаблонов в Битриксе. Раз подстановки не произошло - где-то косяк.
Вы каждый раз считаете значения в результате mysql_fetch_array, а там 2 поля: 'model' и 0 c одинаковым значением. Вот и результат два везде.
надо не так
Если вы изучаете какой-то туториал - возможно, он уже тухлый