Det första jag kan se är din sprintf()
har två substitutionsparametrar men bara en platshållare. Jag tror att du faktiskt menade
$updateSQL = sprintf ("UPDATE Leads SET Notes = CONCAT_WS('\n', Notes, %s) WHERE Id=%d",
GetSQLValueString($_POST['note'], "text"),
GetSQLValueString($_POST['Id'], "int"));
Även din GetSQLValueString()
funktionen omsluter automatiskt "text"-parametrar med citattecken, så du måste ta bort citattecken runt platshållarna.
Jag ändrade också ID-platshållaren till %d
eftersom jag antar att du förväntar dig ett nummer.
Du kan dra nytta av att aktivera felrapportering för utveckling. Detta fel (och eventuellt ett annat angående den odefinierade $Notes
variabel) skulle ha gjort felsökning enklare.
Placera detta överst i ditt skript (endast för utveckling)
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Personligt korståg
Släpp MySQL-biblioteket och flytta din kod till PDO, du kommer inte att se tillbaka.
$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']
));
Ett bättre tillvägagångssätt
Överväg att lagra varje anteckningspost i en separat tabell med en främmande nyckelrelation till den överordnade "Lead" och skapandets tidsstämpel. På så sätt hämtar du helt enkelt alla underordnade anteckningsposter i skapande ordning och nya poster infogas helt enkelt.
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;