2014-01-09 2 views
0

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

ВОПРОС

Так у меня есть таблица, которая хранит пути URL как строки

(Example: 192.168.x.x\Location\Location2\SPECIALNAME\Folder\Folder2)

, и это позволяет нам построить хранилище папок/файлов на стороне клиента для наших пользователей для добавления файлов и доступа к файлам.

Мой вопрос, как я бы об обновлении всех полей, связанных с теми, которые соответствуют

"\SPECIALNAME\" и заменить 'SPECIALNAME' с другим значением (если человек меняет имя основной папки, а затем все вложенные папки и вещи, связанные с эта папка должна быть обновлена ​​с новым именем)

Чтобы попытаться сделать это более ясно вопрос:

Если мои места хранятся в моей таблице:

URL\ **SPECIALNAME** \FOLDER\SUBFOLDER 

    URL\ **SPECIALNAME** \FOLDER\SUBFOLDER\SUBSUBFOLDER1 

    URL\ **SPECIALNAME** \FOLDER\SUBFOLDER2 

    URL\ **SPECIALNAME** \FOLDER\SUBFOLDER2\SUBSUBFOLDER1\SUBSUBFOLDER2 

    URL\ **SPECIALNAME** \FOLDER\OTHERFOLDER 

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

Этого заявление обновления, вероятно, будет делать партию 80+ обновлений на одно изменение имени, чтобы дать перспективу, сколько URL путей будут обновлены с новым именем

ответ

4
UPDATE table SET url = REPLACE(url, '\\SPECIALNAME\\', '\\MORESPECIALNAME\\') WHERE url LIKE '%\\SPECIALNAME\\%'; 
+1

Можете рассмотреть возможность добавления косых черт, чтобы он не соответствовал частям файлов ... но это ответ. –

+0

@JohnChrysostom Хороший звонок. Ред. –

+0

@AndriyM Исправлено, спасибо –

1

Для начала запроса:

SELECT * 
FROM tablename 
WHERE path LIKE "%SPECIALNAME%" 

Затем вы можете перебрать результаты и

$newPath = STR_replace("SPECIALNAME", "NEWNAME", $query['path']); 
+0

Не могли бы вы подробнее рассказать о том, что происходит в коде? Я могу понять, что SPECIALNAME заменено на NEWNAME, но $ query ['path'], которого я лично никогда не видел, и выглядит очень интересно :) – Doodely

+0

Я думаю, он действительно хочет обновить таблицу SQL-запросом. Это не так. –

+1

'$ query ['path'])' это PHP. Я мог бы поклясться, что это было помечено php, но вы правы @JohnChrysostom. –

Смежные вопросы