Lo primero que puedo ver es tu sprintf()
tiene dos parámetros de sustitución pero solo un marcador de posición. Estoy pensando que en realidad querías decir
$updateSQL = sprintf ("UPDATE Leads SET Notes = CONCAT_WS('\n', Notes, %s) WHERE Id=%d",
GetSQLValueString($_POST['note'], "text"),
GetSQLValueString($_POST['Id'], "int"));
Además, su GetSQLValueString()
La función envuelve automáticamente los parámetros de "texto" con comillas, por lo que debe eliminar las comillas alrededor de los marcadores de posición.
También cambié el marcador de posición de ID a %d
ya que asumo que estás esperando un número.
Puede beneficiarse al habilitar el informe de errores para el desarrollo. Este error (y potencialmente otro relacionado con las $Notes
indefinidas variable) habría facilitado la depuración.
Coloque esto en la parte superior de su secuencia de comandos (solo para desarrollo)
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Cruzada Personal
Suelta la biblioteca MySQL y mueve tu código a PDO, no mirarás hacia atrás.
$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 mejor enfoque
Considere almacenar cada entrada de nota en una tabla separada con una relación de clave externa con el "cliente potencial" principal y la marca de tiempo de creación. De esa manera, simplemente recupera todas las entradas de notas secundarias en orden de creación y las nuevas entradas simplemente se insertan.
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;