Jump to content
php.lv forumi

Recommended Posts

Posted

ir tabula:

 

id | key1 | key2 | paareejie lauki

 

ieksh key1 un key2 ir unikaalas veertiibas.

 

Taatad , ja atrodas ieraksts , kurš atbilst pēc nodotajiem key1 un key2 , tad attiecīgo ierakstu vajadzētu UPDEITOT ar nodoto info , bet ja taads ieraksts neatrodaas, tad ievieto jaunu ierakstu ar nodoto info.

 

Pagaidaam to daru taisot 2 kveerijus, 1. izselektee datus peec nodotiem key 1 , key2

, tad php paarbauda vai ir atgriezta kaada rindinja, un ja ir atgriezta tad taisa UPDATE vaicaajumu, bet ja nav tad INSERT vaicaajumu.

 

Vai nevar sho izpildiit smalkaak . vienaa vaicaajumaa un, lai nav arii jaaraksta gan UPDATE , GAN INSERT vaicaajums.

Posted

Ja ir 4.1.x MySQLs tad var izmantot ON DUPLICATE KEY fiichu

http://dev.mysql.com/doc/mysql/en/insert.html

 

Proti nodefinē key1 un key2 par unikāliem kejiem un tad

 

INSERT INTO table (key1,key2,lauks) VALUES ('1','2','blabla') ON DUPLICATE KEY UPDATE citslauks=kautkadavertiba;

 

Bet savietojamības nolūkos var tikuntā taisīt divus kverijus, bet drusku viltīgāk nevis vispirms taisīt SELECTU kas locko tabulas un pie aktīvas lietošanas varētu būt bremzīte, bet gan shitaa:

Tāpat nodefinee abus keyus par unique (vai nu paari vai katru atseviskji) un tad taisi:

 

if(!mysql_query("INSERT INTO table SET key1='val',key2='val'... ")) {

mysql_query("UPDATE table SET blabla ... "); }

 

Proti vispirms izpildi insertu ja mysqls deelj eksisteejoshiem indeksies nevarees to uztaisiit atgrieziiis false un izpildiisies updeits.

Posted (edited)

Ja tiek lietots MySQL (citoes SQL nezinu vai ir tāds REPLACE) un key1, key2 ir definēti kā PRIMARY KEY vai UNIQUE indekss, tad var iztikt ar vienu:

REPLACE INTO table (key1, key2, data, ...) VALUES ('$key1', '$key2', '$data', ...)

Edited by bubu
Posted

O pareizi der arī REPLACE pie nosacījuma ka nav jaupdeito vecā ieraksta kādu lauku vērtības. Teiksim lauks=lauks+1 jo REPLACE vispirms veco ierakstu dzēš, bet ja tas nav nepieciešams tad diezgan eleganti.

Posted

Es, kad sensenos laikos SQL sāku mācīties (sāku ar MySQL), tad par INSERT vispār nezināju, visur tikai REPLACE lietoju :)

×
×
  • Create New...