Warning: count(): Parameter must be an array or an object that implements Countable in /home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line 820

Topic: INSERT ar UPDATE

Kaip geriau spresti tokia problema?
Ar INSERT ar UPDATE. Visada pirma prisijungiu ir paziuriu ar tokio yraso nera. Ir tik tada darau UPDATE. Ar galiam toki reikala padaryti su viena uzklasua.
Kazka radau bet nelabai supratau:

$query = "INSERT INTO test (value) VALUES ('test') ON DUPLICATE KEY UPDATE value = 'test2'";

Gal trumpai apie tai placiau kasnors zinot? Gal kas panasiai naudojat?

SELECT * FROM users WHERE gender = 'female' AND size > 'enough' AND leftsize = rightsize AND age >= 18 AND age < 30 LIMIT 1

Re: INSERT ar UPDATE

Taip, tokiais atvejais naudojama "INSERT .. ON DUPLICATE KEY UPDATE ..." sintaksė. Ant norimo lauko reikia uždėti UNIQUE arba PRIMARY KEY indeksą (abu indeksai leidžia tik unikalias to lauko reiškmes).

Re: INSERT ar UPDATE

Tai kaip turetu atrodyti sitos dvi uzklausos i viena paverstos?

mysql_query("INSERT INTO mus_rodo (`site`,`count`,`time_last`,`url`) VALUES ('".$hostas."','1','".time()."','".$referalas."')");
mysql_query("UPDATE mus_rodo SET url = '".$referalas."', count = count+1, time_last = '".time()."' WHERE site = '".$hostas."'");
SELECT * FROM users WHERE gender = 'female' AND size > 'enough' AND leftsize = rightsize AND age >= 18 AND age < 30 LIMIT 1

Re: INSERT ar UPDATE

Tavo pateiktam atvejui tikriausiai netinka, nes minėtas funkcionalumas naudojamas tik laukams, kurie turi UNIQUE arba PRIMARY KEY indeksą.
Detaliau su visais niuansais: http://dev.mysql.com/doc/refman/4.1/en/insert.html