Pierwszą rzeczą, którą widzę, jest Twój sprintf()
ma dwa parametry podstawienia, ale tylko jeden symbol zastępczy. Myślę, że naprawdę miałeś na myśli
$updateSQL = sprintf ("UPDATE Leads SET Notes = CONCAT_WS('\n', Notes, %s) WHERE Id=%d",
GetSQLValueString($_POST['note'], "text"),
GetSQLValueString($_POST['Id'], "int"));
Również twoja GetSQLValueString()
funkcja automatycznie zawija parametry „tekstowe” w cudzysłowy, więc musisz usunąć cudzysłowy wokół symboli zastępczych.
Zmieniłem również symbol zastępczy identyfikatora na %d
ponieważ zakładam, że oczekujesz liczby.
Możesz skorzystać na włączeniu raportowania błędów dla rozwoju. Ten błąd (i potencjalnie kolejny dotyczący niezdefiniowanych $Notes
zmiennej) ułatwiłoby debugowanie.
Umieść to na górze skryptu (tylko do programowania)
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Osobista krucjata
Upuść bibliotekę MySQL i przenieś swój kod do PDO, nie obejrzysz się za siebie.
$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']
));
Lepsze podejście
Rozważ przechowywanie każdego wpisu notatki w osobnej tabeli z kluczem obcym relacji z nadrzędnym „Potencjalnym klientem” i sygnaturą czasową utworzenia. W ten sposób po prostu pobierasz wszystkie wpisy notatek podrzędnych w kolejności tworzenia, a nowe wpisy są po prostu wstawiane.
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;