Ich habe eine Datenbank, die Informationen auf Clients speichert. Ich habe ein eindeutiges Feld für Telefonnummern, die "Telefon" genannt werden. Ich versuche, parametrisierte Abfragen für INSERT in die Tabelle zu verwenden, und auf einem doppelten Schlüssel aktualisieren Sie die Client-Informationen. Ich habe viermal die Rechtschreibung überprüft, und alles scheint auf dem neuesten Stand zu sein. Ich bekomme den Fehler "check ... für die richtige Syntax in der Nähe von WHERE` Phone` verwenden =? "Parameter Insert ... On Duplicate Key UPDATE fehlschlägt mit SET-Semantik
// These are the fields that we want to Upsert
$fields = "
`Objectives` = :objectives,
`LiquidFunds` = :liquidFunds,
`UnitNumber` = :unitNumber,
`Accredited` = :accredited,
`FirstName` = :firstName,
`LastName` = :lastName,
`Street` = :street,
`Phone` = :phone,
`Email` = :email,
`State` = :state,
`Notes` = :notes,
`City` = :city,
`Zip` = :zip
";
$updateLead = $dbHandle -> prepare("
INSERT INTO `Leads` SET $fields
ON DUPLICATE KEY UPDATE $fields WHERE `Phone` = :phoneKey"
);
Und später bin Bindung ich die Parameter wie so
// Bind our parameters to the updateLead query
$updateLead -> bindParam(":objectives" , $objectives);
$updateLead -> bindParam(":liquidFunds", $_POST['liquidFunds']);
$updateLead -> bindParam(":unitNumber" , $_POST['unitNumber']);
$updateLead -> bindParam(":accredited" , $_POST['accredited']);
$updateLead -> bindParam(":firstName" , $_POST['fname']);
$updateLead -> bindParam(":lastName" , $_POST['lname']);
$updateLead -> bindParam(":street" , $_POST['street']);
$updateLead -> bindParam(":phone" , $_POST['phone']);
$updateLead -> bindParam(":phoneKey" , $_POST['phone']);
$updateLead -> bindParam(":email" , $_POST['email']);
$updateLead -> bindParam(":state" , $_POST['state']);
$updateLead -> bindParam(":notes" , $_POST['notes']);
$updateLead -> bindParam(":city" , $_POST['city']);
$updateLead -> bindParam(":zip" , $_POST['zip']);
Diese genaue Struktur funktioniert perfekt, wenn ich die Abfrage
$updateLead = $dbHandle -> prepare("UPDATE `Leads` SET $fields WHERE `Phone` = :phoneKey);
Ich habe versucht, zu ändern habe auf demselben alles setzen Linie, und es warf den gleichen Fehler (nur auf eine andere "Zeilennummer"). Was um alles in der Welt mache ich hier falsch?
PS: Ich bin mit PHP/PDO
Vielleicht ist es, einige Handbücher über 'DUPLICATE KEY UPDATE 'zu lesen? –
Ich bin mir nicht sicher, ob ich folge –