Zet de juiste UNIQUE op de juiste (combinatie van) kolom (-men) en gebruik de syntaxINSERT ... ON DUPLICATE KEY UPDATE om de boel te inserten of te updaten. De database zal dan zelf kiezen wat er moet gebeuren.
Maar let dus goed op de UNIQUE, die bepaalt of er een INSERT of UPDATE moet plaatsvinden.
Edit: I.p.v. 3 queries kun je dus met 1 query uit de voeten. En scheelt ook nog weer in de PHP-code. Dat ruimt lekker op!
en hier een klein voorbeeldje:
<?php
$mysqli = new mysqli('host', 'user', 'password', 'database');
if(mysqli_connect_errno())
{
trigger_error('Fout bij verbinding: '.$mysqli->error);
}
$sql = "
INSERT INTO gegevens (naam, email)
VALUES ('Piet', '[email protected]')
;
UPDATE inserts
SET last_insert = NOW()
WHERE naam = 'Piet'
";
@Mark: Leuk dat je iets roept over mysqli(), maar dat is het probleem niet. Het is namelijk de bedoeling dat er een keuze wordt gemaakt uit een INSERT of UPDATE, zie de logica. Dan kun je dus niet zowel een INSERT áls een UPDATE naar de database gaan sturen...
@Mark: Leuk dat je iets roept over mysqli(), maar dat is het probleem niet. Het is namelijk de bedoeling dat er een keuze wordt gemaakt uit een INSERT of UPDATE, zie de logica. Dan kun je dus niet zowel een INSERT áls een UPDATE naar de database gaan sturen...
dat is waar maar het zo wel een stuk korter zijn dan de oude methode..
Mark is korter dan Marco... Slaat nergens op, maar dat is ook met jouw verhaal over mysqli het geval. Dat heeft gewoon niks met het probleem te maken, het draait om de SQL en niet om de manier waarop je de SQL naar de database stuurt.
Ps. Sorry dat ik je naam verkeerd schreef, heb daar zelf altijd een hekel aan. Zal beter opletten.