La prima cosa che posso vedere è il tuo sprintf()
ha due parametri di sostituzione ma un solo segnaposto. Sto pensando che in realtà intendevi
$updateSQL = sprintf ("UPDATE Leads SET Notes = CONCAT_WS('\n', Notes, %s) WHERE Id=%d",
GetSQLValueString($_POST['note'], "text"),
GetSQLValueString($_POST['Id'], "int"));
Inoltre, il tuo GetSQLValueString()
la funzione avvolge automaticamente i parametri "testo" tra virgolette, quindi è necessario rimuovere le virgolette attorno ai segnaposto.
Ho anche cambiato il segnaposto ID in %d
come presumo che ti aspetti un numero.
Potresti trarre vantaggio dall'abilitazione della segnalazione degli errori per lo sviluppo. Questo errore (e potenzialmente un altro relativo all'indefinito $Notes
variabile) avrebbe facilitato il debug.
Posizionalo nella parte superiore del tuo script (solo per lo sviluppo)
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Crociata personale
Rilascia la libreria MySQL e sposta il tuo codice su PDO, non guarderai indietro.
$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']
));
Un approccio migliore
Prendi in considerazione la possibilità di archiviare ogni voce di nota in una tabella separata con una relazione di chiave esterna con il "Lead" principale e il timestamp di creazione. In questo modo, recuperi semplicemente tutte le voci della nota figlio nell'ordine di creazione e le nuove voci vengono semplicemente inserite.
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;