Det første jeg kan se er din sprintf()
har to substitutionsparametre, men kun én pladsholder. Jeg tror faktisk, du mente
$updateSQL = sprintf ("UPDATE Leads SET Notes = CONCAT_WS('\n', Notes, %s) WHERE Id=%d",
GetSQLValueString($_POST['note'], "text"),
GetSQLValueString($_POST['Id'], "int"));
Også din GetSQLValueString()
funktion ombryder automatisk "tekst"-parametre med anførselstegn, så du skal fjerne anførselstegn omkring pladsholderne.
Jeg ændrede også ID-pladsholderen til %d
da jeg går ud fra, at du forventer et nummer.
Du kan drage fordel af at aktivere fejlrapportering til udvikling. Denne fejl (og potentielt en anden vedrørende den udefinerede $Notes
variabel) ville have gjort fejlfinding lettere.
Placer dette øverst i dit script (kun til udvikling)
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Personligt korstog
Slip MySQL-biblioteket og flyt din kode til PDO, du vil ikke se dig tilbage.
$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']
));
En bedre tilgang
Overvej at gemme hver noteindgang i en separat tabel med en fremmednøglerelation til det overordnede "Lead" og oprettelsestidsstemplet. På den måde henter du blot alle underordnede noteposter i oprettelsesrækkefølge, og nye poster indsættes simpelthen.
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;