Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> substring 
:(
    Опции темы
GodEatGod
Дата 15.6.2007, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 15.6.2007

Репутация: нет
Всего: 1



здравствуйте.

необходимо построить запрос: если 3 первые знака поля id (*) = 3 первым знакам введенного $id > замена (*) на 3 первые знака $id2

Код

$query= "UPDATE `catalogue` SET substring (`id`,1,3) = ? '$id2' WHERE substring (`id`,1,3)= ? '$id'";


2 вариант:  
Код

$query= "UPDATE `catalogue` SET `id ` = substring($id2,1,3) + substring (`id`,4,6) WHERE substring (`id`,1,3)= substring($id,1,3);
 где может быть ошибка?

Это сообщение отредактировал(а) GodEatGod - 15.6.2007, 11:51
PM MAIL   Вверх
sTa1kEr
Дата 15.6.2007, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 9
Всего: 146



1ый вариант совершенно не правильный.
2ой вариант. Во первых все строковые константы должны быть заключены в одинарные кавычки.
Во вторых строки нужно объеденять через CONCAT, т.к. через "+" они будут интерпретироватся как числа.
Код

$query= "UPDATE `catalogue` SET `id ` = CONCAT(SUBSTRING('$id2', 1, 3), SUBSTRING(`id`, 4, 6)) WHERE SUBSTRING(`id`, 1, 3) = SUBSTRING('$id', 1, 3)";

В третьих зачем нагружать MySQL, когда можно $id и $id2 обрезать в PHP?
Код

$query= "UPDATE `catalogue` SET `id ` = CONCAT('".substr($id2, 1, 3)."', SUBSTRING(`id`, 4, 6)) WHERE SUBSTRING(`id`, 1, 3) = '".substr($id, 1, 3)."'";



Это сообщение отредактировал(а) sTa1kEr - 15.6.2007, 12:23
PM MAIL   Вверх
GodEatGod
Дата 15.6.2007, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 15.6.2007

Репутация: нет
Всего: 1



Цитата(sTa1kEr @ 15.6.2007,  12:19)
Во вторых строки нужно объеденять через CONCAT, т.к. через "+" они будут интерпретироватся как числа.

тип поля id bigint/varchar имеет значение?
PM MAIL   Вверх
sTa1kEr
Дата 15.6.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 9
Всего: 146



Цитата(GodEatGod @  15.6.2007,  12:34 Найти цитируемый пост)
тип поля id bigint/varchar имеет значение? 

Не имеет. Кстати, сервер MySQL? Т.к. если сервер MSSQL, то я вам наврал, в MSSQL строки можно объединять через "+".
PM MAIL   Вверх
malice_
Дата 18.6.2007, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 18.6.2007

Репутация: нет
Всего: нет



в php  [substring] отсчет с 0, в mysql с 1. 
вместо ($id,1,3) -> ($id,0,3).

присвойте SUBSTRING(...) переменные, а затем подставляйте их в запрос.

Это сообщение отредактировал(а) malice_ - 18.6.2007, 16:35
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.1065 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.