MySQL текст запроса заменить проблему - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть база данных joomla с таблицей 'jos_content', содержащей сведения о статьях.

В этой таблице столбец attribs имеет тип данных TEXT, который содержит данные освойства статьи, например:

show_pdf_icon=0
show_print_icon=0
show_email_icon=0

Я пытаюсь изменить свойство 'show_print_icon', чтобы оно имело 1, например:

show_pdf_icon=0
show_print_icon=1
show_email_icon=0

Для этого я написалзапрос, который заменяет 'show_print_icon = 0' на 'show_print_icon = 1' в столбце.

UPDATE jos_content set attribs=replace("attribs", "%print_icon=0\nshow_email%",
"%print_icon=1\nshow_email%") where attribs like '%print_icon=0\nshow_email%';

По какой-то причине после выполнения этого запроса я получил значения столбца как пустые.Я не мог понять, где я ошибся.В чем может быть проблема с запросом?

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Один из способов:

$sql = "Select attribs from jos_content";
$db = JFactory::getDBO():
$db->setQuery($sql):
$contents = $db->loadObjectList();

foreach($contents as $content){
   $attribs = $content->attribs;
   $attribs = explode("\n", $attribs);
   if(!$attribs['show_print_icon']){
      $attribs['show_print_icon'] = 1;
      $content->attribs = implode("\n", $attribs);
   // run the update query here for each content
   }      
} 

Я сообщу вам по-другому, используя Com Content Model

0 голосов
/ 02 февраля 2012

Проверьте символ новой строки. Это может быть не \ n, это может быть также \ r \ n или просто \ r, поэтому вы не можете надежно сопоставить это правило.

Кроме того, зачем вам текст окружающий? Это просто делает ваш логин более сложным, чем должно быть. Вы должны быть уверены, что сохраняете непротиворечивые данные и не располагаете там переменные в другом порядке, например.

Я не знаю, какая у вас там структура базы данных, но постарайтесь точно определить, что вам нужно изменить. Если сейчас это невозможно, попробуйте изменить свою логику, чтобы сделать это возможным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...