justus Posted April 14, 2005 Report Share Posted April 14, 2005 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. Link to comment Share on other sites More sharing options...
Roze Posted April 14, 2005 Report Share Posted April 14, 2005 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. Link to comment Share on other sites More sharing options...
bubu Posted April 14, 2005 Report Share Posted April 14, 2005 (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 April 14, 2005 by bubu Link to comment Share on other sites More sharing options...
Roze Posted April 14, 2005 Report Share Posted April 14, 2005 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. Link to comment Share on other sites More sharing options...
bubu Posted April 14, 2005 Report Share Posted April 14, 2005 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 :) Link to comment Share on other sites More sharing options...
justus Posted April 14, 2005 Author Report Share Posted April 14, 2005 (edited) <_< Edited April 15, 2005 by justus Link to comment Share on other sites More sharing options...
Recommended Posts