replace SET aaaa=aa+1 не пашет :( а должно ?

Сенсей

Новичок
replace SET aaaa=aa+1 не пашет :( а должно ?

Вобщем записываю реферерс в базу ...

Таблица :

CREATE TABLE `referer` (
`url` varchar(255) NOT NULL default '',
`counter` int(11) NOT NULL default '0',
PRIMARY KEY (`url`)
) TYPE=MyISAM;


$referer = "адрес";

mysql_query("REPLACE referer SET url='".$referer."', counter=counter+1", $connect);

Данные засосывает, не дублирует .... но не хочет увеличивать counters :(

Вобщем идея такая что если урл уже существует - то увеличиваем counter на один ... типа хиты с такого то урла ...

Ведь должно ж работать по идее ?
 

alpine

Новичок
>> "REPLACE referer SET url='".$referer."', counter=counter+1"
а апдейтом никак ?

-~{}~ 03.07.04 21:29:

http://dev.mysql.com/doc/mysql/ru/REPLACE.html

Оператор REPLACE работает точно так же, как INSERT, за исключением того, что если старая запись в данной таблице имеет то же значение индекса UNIQUE или PRIMARY KEY, что и новая, то старая запись перед занесением новой будет удалена. See section 6.4.3 Синтаксис оператора INSERT.

Другими словами, команда REPLACE не предоставляет доступа к замещаемой записи. В некоторых старых версиях MySQL такой доступ иногда оказывался возможным, но это был дефект, который уже исправлен.

Тему ты конечно не удачно назвал ...
 

Сенсей

Новичок
Так я адейтом раньше и делал ... НО ! Тогда приходилось делать лишний запрос к базе - на определение существования уже такого урла в базе ... и если существует - делать апдейт ... если не существует - чистый инсерт ...

Вот думал что смогу заменить это одним запросом к базе ... видимо не получится ....
 

.des.

Поставил пиво кому надо ;-)
Сенсей можете делать вначале update и только потом insert если требуется.
hint: affected rows
 
Сверху