Daarmee kun je besparen op de voorafgaande controle of een klant al bestaat: mislukt de INSERT van een nieuwe klant namelijk, dan wordt de UPDATE van een bestaande klant uitgevoerd.
Waarom werkt het niet in beide gevallen? Is het aantal parameters of de volgorde anders? Waarin uit zich dit? Worden gegevens niet geupdate? Krijg je ook foutmeldingen?
Je zou er ook altijd voor kunnen kiezen om het toevoegen en wijzigen te splitsen en deze acties geheel in afzondering te behandelen.
Geen idee wat je hier probeert maar PHP is niet hoofdlettergevoelig, dus hier staat 2x dezelfde variabele. (bijv. 5=5)
Verder wil ik je adviseren om, voor de overzichtelijkheid, al die vraagtekens weg te halen en met pseudoniemen te werken, dan zie je wat je doet.
Bijvoorbeeld :
$sql = "INSERT INTO klant ( Voornaam, etc)
VALUES ('naam=:naam', 'adres=:adres', 'woonplaats=:woonplaats')";
$waarden = array(
':naam' => 'Pietje',
':adres: => 'php-weg',
':woonplaats' => 'Programmeerstad
)
$stmt = $mysqli->prepare($sql);
if(!$stmt->execute($waarden)) {
echo "Door een fout is de klant niet toegevoegd!";
exit;
}
Ward,
dank je wel voor dit doortastende antwoord, hier was ik naar op zoek, zonder dat ik van het bestaan wist.
Thomas,
ik gebruik prepared statements, omdat ik overal lees, dat dat qua beveiliging beter is (ivm sql injection), het gaat immers om het verwerken van menselijke input.
Waarom dit niet in beide gevallen werkt, is mij dus ook niet duidelijk, maar een syntaxes die dit combineert zorgt er in ieder geval voor dat deze vraag niet meer evident is.
Pipo,
Je zegt wel dat php niet hoofdletter gevoelig is, maar als ik beide echo, dan krijg ik maar van 1 de waarde. de 2e waarde, dus $KlantID is een net uit de db onttrokken waarde, is dat misschien waarom?
Je tip over psuedoniemen neem ik zeker ter harte, dank je wel hiervoor.