První věc, kterou vidím, je vaše sprintf()
má dva substituční parametry, ale pouze jeden zástupný symbol. Myslím, že jsi to vlastně myslel
$updateSQL = sprintf ("UPDATE Leads SET Notes = CONCAT_WS('\n', Notes, %s) WHERE Id=%d",
GetSQLValueString($_POST['note'], "text"),
GetSQLValueString($_POST['Id'], "int"));
Také vaše GetSQLValueString()
funkce automaticky zalamuje "textové" parametry do uvozovek, takže musíte uvozovky kolem zástupných symbolů odstranit.
Také jsem změnil zástupný symbol ID na %d
protože předpokládám, že očekáváte číslo.
Můžete mít prospěch z povolení hlášení chyb pro vývoj. Tato chyba (a potenciálně další ohledně nedefinovaného $Notes
proměnná) by ladění usnadnilo.
Umístěte jej na začátek skriptu (pouze pro vývoj)
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Osobní křížová výprava
Zahoďte knihovnu MySQL a přesuňte svůj kód do PDO, už se nebudete ohlížet.
$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']
));
Lepší přístup
Zvažte uložení každé položky poznámky do samostatné tabulky se vztahem cizího klíče k nadřazenému „Lead“ a časovému razítku vytvoření. Tímto způsobem jednoduše načtete všechny položky podřízených poznámek v pořadí vytvoření a nové položky se jednoduše vloží.
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;