dat doet de truc niet....ff eten..dadelijk weer verder over denkenquote:Mooiste oplossing is denk ik:
sorry..heel flauwquote:Ik snap je niet? Je wilt iets updaten maar dan moet het er wel zijn?
Je zoekt dus eigenlijk iets om een rij in te voegen, maar als die rij al bestaat moet'ie een update krijgen. Daar heeft MySQL al iets voor: INSERT ... ON DUPLICATE KEY UPDATEquote:Op vrijdag 18 februari 2011 11:54 schreef MrNiles het volgende:
[..]
sorry..heel flauw
ik wil een rij updaten..maar als deze rij niet bestaat kan ik m ook niet updaten
ik kan de rij wel invoegen dan wordt bij elke wijziging deze rij ingevoegd terwijl hij geupdate moet worden
Hee dat is cool, wist ik zelf ook niet. Weer wat geleerdquote:Op vrijdag 18 februari 2011 11:56 schreef Light het volgende:
[..]
Je zoekt dus eigenlijk iets om een rij in te voegen, maar als die rij al bestaat moet'ie een update krijgen. Daar heeft MySQL al iets voor: INSERT ... ON DUPLICATE KEY UPDATE
of gewoon REPLACE INTOquote:Op vrijdag 18 februari 2011 11:56 schreef Light het volgende:
[..]
Je zoekt dus eigenlijk iets om een rij in te voegen, maar als die rij al bestaat moet'ie een update krijgen. Daar heeft MySQL al iets voor: INSERT ... ON DUPLICATE KEY UPDATE
Let wel op dat REPLACE INTO eerst de rij verwijdert en daarna weer invoegt.quote:
Werkt dit ook met tabellen waar je geen primary key hebt?quote:Op vrijdag 18 februari 2011 12:03 schreef mstx het volgende:
[..]
Let wel op dat REPLACE INTO eerst de rij verwijdert en daarna weer invoegt.
Die koppeltabel kun je een primary key (of unieke key) geven op (g_id, o_id). Dat werkt meteen als een index op g_id, dus daar heb je geen aparte index meer nodig. Een index op o_id is wel handig.quote:Op vrijdag 18 februari 2011 11:57 schreef remi1986 het volgende:
[..]
Hee dat is cool, wist ik zelf ook niet. Weer wat geleerd
Het is echter wel in dit geval dat het gaat om een koppeltabel, dus geen primary key. Werkt dit dan ook ?
Snel ff getest in een project waar ik zelf ook een koppeltabel heb. Maar als ik een primary key toevoeg en ik voeg een rij in, krijg ik een error dat de key al bestaat.quote:Op vrijdag 18 februari 2011 12:11 schreef Light het volgende:
[..]
Die koppeltabel kun je een primary key (of unieke key) geven op (g_id, o_id). Dat werkt meteen als een index op g_id, dus daar heb je geen aparte index meer nodig. Een index op o_id is wel handig.
Dat dus, zou ik niet zo snel doen.quote:Op vrijdag 18 februari 2011 12:03 schreef mstx het volgende:
[..]
Let wel op dat REPLACE INTO eerst de rij verwijdert en daarna weer invoegt.
http://dev.mysql.com/doc/refman/5.0/en/replace.htmlquote:Note that unless the table has a PRIMARY KEY or UNIQUE index, using a REPLACE statement makes no sense. It becomes equivalent to INSERT, because there is no index to be used to determine whether a new row duplicates another.
Je zegt niks nieuws.quote:Op vrijdag 18 februari 2011 12:16 schreef remi1986 het volgende:
[..]
http://dev.mysql.com/doc/refman/5.0/en/replace.html
G_id is niet uniekquote:Die koppeltabel kun je een primary key (of unieke key) geven op (g_id, o_id). Dat werkt meteen als een index op g_id, dus daar heb je geen aparte index meer nodig. Een index op o_id is wel handig.
Weet ik, maar paar berichten daarboven ging het over keys toevoegen in een koppeltabel. Maar dan kan je niet meer meerdere malen dezelfde user_id (in het geval van MrNiles) in de koppeltabel kwijt.quote:
Als je vaker dezelfde user_id nodig hebt, moet je hem niet uniek maken.quote:Op vrijdag 18 februari 2011 12:40 schreef remi1986 het volgende:
[..]
Weet ik, maar paar berichten daarboven ging het over keys toevoegen in een koppeltabel. Maar dan kan je niet meer meerdere malen dezelfde user_id (in het geval van MrNiles) in de koppeltabel kwijt.
Daarom een unieke index (of primary key) op (G_id, O_id). Een index kan meerdere kolommen bevattenquote:Op vrijdag 18 februari 2011 12:34 schreef MrNiles het volgende:
[..]
G_id is niet uniek
O_id is ook niet uniek
maar G_id AND O_id moeten wel uniek zijn
jullie zijn er natuurlijk allang achter dat ik een complete n00b benquote:Daarom een unieke index (of primary key) op (G_id, O_id). Een index kan meerdere kolommen bevatten
De makkelijkste manier is via phpmyadmin.quote:Op vrijdag 18 februari 2011 12:50 schreef MrNiles het volgende:
[..]
jullie zijn er natuurlijk allang achter dat ik een complete n00b ben
maar wat moet een index (over meerdere kolommen) dan doen?
Dat maakt de combinatie van beide velden uniek. Dus je kan een INSERT doen. als de waarden van g_id EN o_id al voorkomen dan zal hij ze updaten. Wist dit ook nog niet. Heb dit net aangepast in mijn eigen project. Kon hierdoor van 4 queries terug naar 2.quote:Op vrijdag 18 februari 2011 13:58 schreef MrNiles het volgende:
[..]
Niet Hoe maar wat de functie ervan is
1 2 3 4 5 6 7 8 9 10 | <?php $query = mysql_query("INSERT INTO langpack (link_id,type,language,data) VALUES ('".mysql_real_escape_string($unit_id)."', 'unit', '".mysql_real_escape_string($code)."', '".mysql_real_escape_string($_POST["unit_name_".$code])."') ON DUPLICATE KEY UPDATE data = '".mysql_real_escape_string($_POST["unit_name_".$code])."' "); ?> |
want?quote:Op vrijdag 18 februari 2011 14:18 schreef GlowMouse het volgende:
Je zou een klein MySQL-quizje moeten doen elke keer voordat je zo'n LAMP-pakket kunt downloaden.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |