Het eerste wat ik kan zien is je sprintf()
heeft twee vervangingsparameters, maar slechts één tijdelijke aanduiding. Ik denk dat je eigenlijk bedoelde
$updateSQL = sprintf ("UPDATE Leads SET Notes = CONCAT_WS('\n', Notes, %s) WHERE Id=%d",
GetSQLValueString($_POST['note'], "text"),
GetSQLValueString($_POST['Id'], "int"));
Ook uw GetSQLValueString()
De functie plaatst automatisch "tekst"-parameters tussen aanhalingstekens, dus u moet de aanhalingstekens rond de tijdelijke aanduidingen verwijderen.
Ik heb ook de ID-placeholder gewijzigd in %d
aangezien ik aanneem dat je een nummer verwacht.
U kunt profiteren van het inschakelen van foutrapportage voor ontwikkeling. Deze fout (en mogelijk een andere met betrekking tot de ongedefinieerde $Notes
variabele) zou het debuggen gemakkelijker hebben gemaakt.
Plaats dit bovenaan je script (alleen voor ontwikkeling)
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Persoonlijke kruistocht
Zet de MySQL-bibliotheek neer en verplaats je code naar PDO, je kijkt niet meer achterom.
$stmt = $db->prepare('UPDATE Leads SET Notes = CONCAT_WS(:sep, Notes, :note) WHERE Id = :id');
$stmt->execute(array(
'sep' => PHP_EOL,
'note' => $_POST['note'],
'id' => $_POST['Id']
));
Een betere aanpak
Overweeg om elke notitie op te slaan in een aparte tabel met een refererende sleutelrelatie met de bovenliggende "Lead" en aanmaaktijdstempel. Op die manier haalt u eenvoudig alle onderliggende notitie-items op in de volgorde waarin ze zijn gemaakt en nieuwe items worden eenvoudig ingevoegd.
CREATE TABLE LeadNotes (
id INT NOT NULL AUTO_INCREMENT,
lead_id INT,
note TEXT,
created_dt TIMESTAMP,
PRIMARY KEY (id),
FOREIGN KEY (lead_id) REFERENCES Leads (Id)
ON DELETE CASCADE
) ENGINE=INNODB;