Das Erste, was ich sehen kann, ist Ihr sprintf()
hat zwei Substitutionsparameter, aber nur einen Platzhalter. Ich denke, Sie meinten tatsächlich
$updateSQL = sprintf ("UPDATE Leads SET Notes = CONCAT_WS('\n', Notes, %s) WHERE Id=%d",
GetSQLValueString($_POST['note'], "text"),
GetSQLValueString($_POST['Id'], "int"));
Auch Ihr GetSQLValueString()
Funktion umschließt "Text"-Parameter automatisch mit Anführungszeichen, daher müssen Sie die Anführungszeichen um die Platzhalter entfernen.
Ich habe auch den ID-Platzhalter in %d
geändert da ich annehme, dass Sie eine Zahl erwarten.
Sie können davon profitieren, die Fehlerberichterstattung für die Entwicklung zu aktivieren. Dieser Fehler (und möglicherweise ein weiterer bezüglich der nicht definierten $Notes
Variable) hätte das Debuggen einfacher gemacht.
Platzieren Sie dies am Anfang Ihres Skripts (nur für die Entwicklung)
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Persönlicher Kreuzzug
Löschen Sie die MySQL-Bibliothek und verschieben Sie Ihren Code nach PDO, Sie werden nicht mehr zurückblicken.
$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']
));
Ein besserer Ansatz
Erwägen Sie, jeden Notizeintrag in einer separaten Tabelle mit einer Fremdschlüsselbeziehung zum übergeordneten „Lead“ und dem Erstellungszeitstempel zu speichern. Auf diese Weise rufen Sie einfach alle untergeordneten Notizeinträge in der Erstellungsreihenfolge ab und neue Einträge werden einfach eingefügt.
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;