SQL запрос обрезки строки. Или PHP скрипт.

12 3
SEO-MAN
На сайте с 25.06.2007
Offline
187
3511

Очень надо, если строке в поле в () есть текст, то стереть ковычки с содержимым и обрезать слово sql запросом.

К примеру есть:

Вася пупкин (ступкин)

А станет

Вася пуп

через пхпадмин хочу сделать

Либо же, более расширенная задача.

php скриптом или же через phpmyadmin

1. найти в таблице-1 все записи, у которых есть в () текст.

2. для каждой из этих записей сделать замену со старой на новую, оставляя после второго слова 2-3 символа.

3. для каждой обработанной записи найти в таблице-2 её старое название и заменить на новое.

Пока что знаю тольк

SELECT * FROM `user` WHERE `username` LIKE '%(%'

А как пройтись циклом по результатам селекта?

Форум сео (http://forum-seo.net) для новичков автоматическая регистрация в 30000 каталогах за 5$ (/ru/forum/157861) Нужна доработка 2 досок объявлений - avtopmr.net, pmrdom.com (вип объявления и удаление дублей)
SEO-MAN
На сайте с 25.06.2007
Offline
187
#1

Всё сделал, вот только проблема, как занести в БД обаботанные данные из $row

$sql = mysql_query("SELECT * ....

$row = mysql_fetch_array($sql ....

if (mysql_query("UPDATE user SET username='$row[username]'")) - затирает просто все строки user.username в БД, а как зменить только те что ранее выбрал?

I
На сайте с 23.12.2010
Offline
25
#2
SEO-MAN:
Всё сделал, вот только проблема, как занести в БД обаботанные данные из $row
$sql = mysql_query("SELECT * ....
$row = mysql_fetch_array($sql ....
if (mysql_query("UPDATE user SET username='$row[username]'")) - затирает просто все строки user.username в БД, а как зменить только те что ранее выбрал?

WHERE `username` = ....

ne0n91
На сайте с 28.03.2011
Offline
58
#3

Ну и обьясняете вы конечно ..

Вообще если вам единоразово надо произвести замену то можно перебрать все поля в таблице:

$sql = mysql_query("SELECT id, username FROM `user`"); // запрос в бд, по любому там id есть у юзера
while($row = mysql_fetch_assoc( $sql )){ // цикл перебора
echo $row['id'] . ' - ' . $row['username'];
if(preg_match('/^(.*)\((.*)\)(.*)$/Uis',$row['username'],$match)){ // если у юзера скобки то
$new_name = substr(($match[1].$match[3]),0,10); // формируем новый ник, без скобок и их содержимого, обрезаем
mysql_query("UPDATE user SET username='{$new_name}' WHERE id='{$row['id']}'"); // обновляем ник
echo ', новый ник:'.$new_name;
}
echo '<br>';
}
SEO-MAN
На сайте с 25.06.2007
Offline
187
#4

Все решил все проблемы, спасиб! Тему можно закрывать.

SEO-MAN
На сайте с 25.06.2007
Offline
187
#5

Другая проблема, не хочу клепать темы, как искать спец символы?

¦ • и просто "

$sql = mysql_query("SELECT * FROM `user` WHERE `username` LIKE '%¦%'

и потом в

$len = str_replace("символ","",$len);

вставить

php.developer
На сайте с 22.11.2010
Offline
94
#6
SEO-MAN:
Другая проблема, не хочу клепать темы, как искать спец символы?
¦ • и просто "
$sql = mysql_query("SELECT * FROM `user` WHERE `username` LIKE '%¦%'
и потом в
$len = str_replace("символ","",$len);
вставить

Спецсимволы.

ne0n91
На сайте с 28.03.2011
Offline
58
#7

SEO-MAN, у вас данные в базу без фильтрации проходят? Не проще ли перед занесением данных в бд - фильтровать их по всем нужным параметрам, удалять спец символы?

Опять же я думаю проще будет единоразово перебрать все поля в таблице, попутно проверяя значения на спецсимволы, удалять их или экранировать и сразу заносить новое значение в бд.

SEO-MAN
На сайте с 25.06.2007
Offline
187
#8

Мне нужно 1 раз очистить уже существующую БД от подобного мусора.

SEO-MAN
На сайте с 25.06.2007
Offline
187
#9

к примеру

$sql = mysql_query("SELECT * FROM `user` WHERE `username` LIKE '%&bull;%'");

что то возвращает 0 строк, хотя есть символы такие.

И

$glas1 = array('&yen;'); тоже не отрабатывает.

S
На сайте с 17.05.2009
Offline
20
#10

Так у Вас в таблице в столбце user.username есть вообще такой набор символов "&bull;" ?

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий