PHP + MySQL многозадачный запрос

V2oD2o

Новичок
значит суть в чем, грузим csv, заливаем в БД - вопросов ноль..
далее прайс обновили, надо залить тоже самое..

как залить в БД строку с проверкой на одинаковость с уже имеющимися записями по трем полям?

например:
есть $arr[]=BOSCH, A4118774, MOSCOW, 40, 1558.20
надо влить $arr[]=BOSCH, A4118774, MOSCOW, 25, 1680.45

т.е. берем ищем поля 1, 2, 3, при их совпадении обновляем для каждой строки поля 4 и 5
 

V2oD2o

Новичок
это я смотрел, там только по уникальному ключу поиск.. или я просто не разобрался, можно пример ?
 

V2oD2o

Новичок
ALTER TABLE `prices` ADD UNIQUE (`name`)

вываливает:
#1170 - BLOB/TEXT column 'name' used in key specification without a key length

`prices` = utf8-bin, MyISAM
 

V2oD2o

Новичок
а все, надо в VARCHAR перевести и длинну строки указать, спасибо!
 

Redjik

Джедай-мастер
ALTER TABLE `prices` ADD UNIQUE (`name` ,`второй столбец`, `третий столбец`)

тебе же по трем надо - названия то могут и совпадать
 

V2oD2o

Новичок
ну да я по трем и сделал, только не понял почему длинна ключа максимум 1000 байт, а указать даже VARCHAR = 512 нельзя.. остановился на 300..
вот ща пробовать запросы буду
 

V2oD2o

Новичок
нифига, вливает только одну строку почему то..

PHP:
$query="INSERT INTO `table` (`id`, `sup`, `bra`, `art`, `tex`, `cnt`, `time`, `cst`) VALUES ('', '".$arr[0]."', '".$arr[1]."', '".$arr[2]."', '".$arr[3]."', '".$arr[4]."', '".$arr[5]."', '".$arr[6]."') ON DUPLICATE KEY UPDATE `cnt`='".$arr[4]."', `time`='".$arr[5]."', `cst`='".$arr[6]."'";
строк примерно 200, поля `sup`, `bra`, `art` - все три uniqe, все они ниразу не повторяются
 

V2oD2o

Новичок
все впринципе логично, срабатвывает как надо, только почему то в случае даже одного совпадения по полю unique..

т.е. строки:
TRM VOXEL 858879551 450.05
UMI TRIMMER 858879551 598.75

в итоге в базе:
TRM VOXEL 858879551 598.75
 

Redjik

Джедай-мастер
я третий раз уже пишу - 1 индекс на три поля сделай, даже пример написал
 
Сверху