У меня есть база данных, в которой хранится информация о клиентах. У меня есть уникальное поле для телефонных номеров под названием «Телефон». Я пытаюсь использовать параметризованные запросы для INSERT в таблице, а на дубликат - обновлять информацию о клиентах. У меня четверо проверено правописание, и все кажется до пар. Я продолжаю получать ошибку «проверить ... для правильного синтаксиса для использования рядом с WHERE` Phone` =? "Параметрирование вставки ... В дубликатном ключе UPDATE не выполняется с использованием семантики SET
// 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"
);
А позже я связывание параметров, как так
// 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']);
Это точная структура отлично работает, если изменить запрос
$updateLead = $dbHandle -> prepare("UPDATE `Leads` SET $fields WHERE `Phone` = :phoneKey);
Я попытался положить все на том же line, и он выбросил ту же ошибку (только на другой номер строки). Что я здесь делаю неправильно?
PS: Я использую PHP/PDO
Возможно, вам нужно прочитать некоторые руководства по поводу 'DUPLICATE KEY UPDATE'? –
Я не уверен, что я следую за –