Първото нещо, което мога да видя, е вашият sprintf()
има два параметъра за заместване, но само един заместител. Мисля, че наистина имаш предвид
$updateSQL = sprintf ("UPDATE Leads SET Notes = CONCAT_WS('\n', Notes, %s) WHERE Id=%d",
GetSQLValueString($_POST['note'], "text"),
GetSQLValueString($_POST['Id'], "int"));
Също така вашият GetSQLValueString()
функцията автоматично обвива "текстовите" параметри с кавички, така че трябва да премахнете кавичките около заместващите.
Също така промених заместващия идентификатор на %d
тъй като предполагам, че очаквате номер.
Може да се възползвате от активиране на докладване за грешки за разработка. Тази грешка (и евентуално друга по отношение на недефинирания $Notes
). променлива) би направила отстраняването на грешки по-лесно.
Поставете това в горната част на вашия скрипт (само за разработка)
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Личен кръстоносен поход
Изхвърлете MySQL библиотеката и преместете кода си в PDO, няма да гледате назад.
$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']
));
По-добър подход
Помислете за съхраняване на всеки запис в бележка в отделна таблица с връзка с външен ключ към родителския „Възможен клиент“ и времева марка за създаване. По този начин просто извличате всички записи на дъщерните бележки в реда на създаване и новите записи просто се вмъкват.
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;