2012-02-02 50 views
0

我有一個joomla數據庫'jos_content'表包含有關文章的詳細信息。mysql查詢文本替換問題

在該表中,列「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%'; 

出於某種原因,執行此查詢後,我得到列值爲空。 我無法理解我出錯的地方。查詢有什麼問題?

回答

0

檢查換行符。它可能不是\ n,它可能也是\ r \ n或者\ r,所以你不能可靠地匹配這條規則。

另外,爲什麼你需要文字surroundig?它只會讓你的登錄更加複雜。例如,您必須確保保持一致的數據,並且不要以其他順序存在變量。

我不知道你的數據庫結構是什麼,但是試着去匹配你需要改變的東西。如果現在是不可能的,不是試圖改變你的邏輯,所以你有可能

1

一種方法是:

$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內容模型