public function RecalculateTopicExtra($search, $replace) {
$upcount = 0;
$sql = "SELECT topic_id, topic_extra FROM prefix_topic_content";
$aRows = $this->oDb->select($sql);
if($aRows = $this->oDb->select($sql))
{
foreach($aRows as $aRow)
{
$topic_id = $aRow['topic_id'];
$topic_extra = str_replace($search, $replace, unserialize($aRow['topic_extra']), $rcount);
if ($rcount > 0)
{
$sql = "UPDATE prefix_topic_content SET topic_extra = '" . serialize($topic_extra) . "' WHERE topic_id = " . $topic_id;
$this->oDb->query($sql);
$upcount++;
}
}
}
return $upcount;
}
июля
23
2014
+3
Замена подстроки в сериализованных данных БД
Наступив на заботливо подложенные авторами грабли в виде хранения путей к изображениям в абсолютном виде (http://...) — исправляем данные в БД. Просто замена подстроки в поле таблицы не вызывает трудностей, а вот внести исправления в сериализованные данные при помощи одного только phpmyadmin не получится. Функция на примере таблицы prefix_topic_content и поля topic_extra.
Похожие статьи
-
Локальные URL - грабли №2
Вступив не неблагодарный путь работы с локальными URL (URL в рамках данного хоста без http://hostname/) я ошибочно полагал что все проблемы закончатся на исправлении данных в БД (здесь я типа обратился к сайдбару, в...
-
MySQL replace serialized data (Замена сериализованных данных в MySQL)
Когда-то мне понадобилось поковыряться в стерилизованных данных AltoCMS. В тот раз я набросал костыль в админку на php. Теперь, после перехода на https, опять столкнулся с проблемой URL'ов — в БД повсеместно URL ...
0 комментариев