La première chose que je peux voir est votre sprintf()
a deux paramètres de substitution mais un seul espace réservé. Je pense que tu voulais vraiment dire
$updateSQL = sprintf ("UPDATE Leads SET Notes = CONCAT_WS('\n', Notes, %s) WHERE Id=%d",
GetSQLValueString($_POST['note'], "text"),
GetSQLValueString($_POST['Id'], "int"));
Aussi, votre GetSQLValueString()
La fonction enveloppe automatiquement les paramètres "texte" avec des guillemets, vous devez donc supprimer les guillemets autour des espaces réservés.
J'ai également changé l'espace réservé de l'ID en %d
car je suppose que vous attendez un nombre.
Vous pouvez bénéficier de l'activation du rapport d'erreurs pour le développement. Cette erreur (et potentiellement une autre concernant le $Notes
non défini variable) aurait facilité le débogage.
Placez ceci en haut de votre script (pour le développement uniquement)
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Croisade personnelle
Abandonnez la bibliothèque MySQL et déplacez votre code vers PDO, vous ne regarderez pas en arrière.
$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']
));
Une meilleure approche
Envisagez de stocker chaque entrée de note dans une table séparée avec une relation de clé étrangère avec le parent "Lead" et l'horodatage de création. De cette façon, vous récupérez simplement toutes les entrées de note enfant dans l'ordre de création et les nouvelles entrées sont simplement insérées.
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;