2012-06-18 1 views
0

Мне нужна ваша помощь с небольшой проблемой, которую у меня есть. Как я могу обновить часть группы текста, разделенную запятой. Когда текст вводится в базу данных, это одна строка текста с запятыми между каждым словом, но когда я хочу повторить это, я использую функцию разрыва, чтобы разделить их на отдельные слова, а не на одну строку текста, как у меня есть это в базе данных.Как обновить/удалить одно слово в строке текста

Итак, теперь мой вопрос: как я могу сделать обновление/удалить одно слово в базе данных. Remeber, у меня это как одна строка текста в базе данных, и я не заинтересован в обновлении всей строки текста ... всего лишь одно слово в тексте.

Спасибо.

$text = "name,fname,lname,class,age" ;  
$newtext = explode(",", $text) ; 
+2

Это не вариант, чтобы изменить базу данных в наличие этих тегов (или то, что они) будут в отдельных строках в базе данных, а затем выбрать все из них с помощью 'WHERE' положение? – h2ooooooo

ответ

0

Может использовать функцию replace() в запросе обновления sql.

Update table SET text=REPLACE(text,'age','newstring') 
+1

Это заменило бы '' last_page_visited' 'на '' last_pnewstring_visited'' – h2ooooooo

+0

как насчет добавления в текст WHERE REGEXP '[[: <:]] {$ f [' age ']} [[:>:]] ' – sel

+0

typo: должен быть WHERE text REGEXP' [[: <:]]age[[:>:]] ' – sel

0

Update или удалить слово из вашего массива, а затем лопаются массив и сохранить новое значение в поле базы данных.

//Remove all instances of $value from $array 
function array_remove($array, $value) { 
    return array_filter($array, function ($e) use ($value) { 
     return $e != $value; 
    }); 
} 

// Add only unique values 
function array_add($array, $value) { 
    if (!in_array($value, $array)) 
    $array[] = $value; 
    return $array; 
} 

$text = "name,fname,lname,class,age" ; 
$newtext = explode(",", $text) ; 
$newtext = array_remove($newtext, 'lname'); // Remove lname 
$newtext = array_add($newtext, 'mail');  // Add mail 
$newtext = array_add($newtext, 'class'); // Won't add it again 
$newtext = implode(',', $newtext);   // name,fname,class,age,mail