gegevens toevoegen zonder eerst de tabel te lezen?
Ik vraag me af of er met MySQL een mogelijkheid bestaat om gegevens toe te voegen in een tabel zonder eerst te lezen, samenvoegen met nieuwe gegevens en vervolgens updaten?
Dus eigenlijk zoiets als in PHP kan worden gedaan met ".="
Doel is om gegevens aan een logbestand toe te voegen, zodoende bij te houden waar een gebruiker is geweest.
hij moet eerst kijken wat hij in welke tabel in moet voegen en dan gaat hij pas de hokjes inkleuren
En moet het gekoppeld worden aan reeds bestaande info zou je kunnen kijken naar een where-constructie.
http://en.wikipedia.org/wiki/Merge_%28SQL%29 en bijvoorbeeld Oracle heeft dit al geruime tijd geimplementeerd. MySQL kent wel INSERT ... ON DUPLICATE KEY UPDATE wat iets beperkter is maar ook wel goed bruikbaar.
een insert/update oftewel een merge bestaat niet in MySQL. merge is overigens wel een SQL 2008 standaard: Gewijzigd op 11/11/2010 15:47:58 door John D
Misschien een AJAX functie schrijven, die verwijst naar een query en die fungeert als tracker?
Voorafgaand aan MobiQust even een test.
Ik ben er nog niet handig in. Maar dat komt wel.
@Boris: Dat is inderdaad wat de TS nodig heeft, en wat John bedoelde ;-) Ik kon even niet op het woord komen, bedankt voor het geheugensteuntje!
Begrijp ik je code goed, doe ik met "SET veld =" inderdaad wat ik wil?
In "tabel" wil ik aan "veld" een waarde toevoegen, dit doe ik dmv "CONCAT("de naam van het veld", "de waarde die ik wil toevoegen")
Na wat googlen kwam ik toch weer terug bij phphulp en vond min of meer dezelfde vraag: http://www.phphulp.nl/php/forum/topic/sql-concat/61475/
Dank voor jullie feedback, ik ga even pruDsen :-)
Toevoeging op 11/11/2010 16:46:54:
Okay, dan nu de praktijk.. so far so good, geen errormeldingen maar ook geen log!?
Zoals gezegd wilde ik naar een tabel "LOG" schrijven waar een bezoeker is geweest. Naar aanleiding van het voorgaande heb ik de volgende query geschreven;
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$Opdracht = "UPDATE LOG SET PAGEVISITS = CONCAT(PAGEVISITS, ', ".$_SERVER['PHP_SELF']."') WHERE ID = '".$_SESSION['logid']."'";
if (($result = mysql_query($Opdracht)) === false) {
$RETURN = "FALSE";
$foutmeldingen[] = "Log kan niet worden geschreven";
}
?>
$Opdracht = "UPDATE LOG SET PAGEVISITS = CONCAT(PAGEVISITS, ', ".$_SERVER['PHP_SELF']."') WHERE ID = '".$_SESSION['logid']."'";
if (($result = mysql_query($Opdracht)) === false) {
$RETURN = "FALSE";
$foutmeldingen[] = "Log kan niet worden geschreven";
}
?>
Toevoeging op 11/11/2010 16:52:21:
Nevermind, ik heb het al gevonden!
Als het veld nog leeg is wordt er niets toegevoegd :-) misschien moet ik dit veld maar standaard vullen met "iets"...