Первое, что я вижу, у вашего sprintf()
есть два параметра подстановки, но только один заполнитель.Я думаю, что вы на самом деле имели в виду
$updateSQL = sprintf ("UPDATE Leads SET Notes = CONCAT_WS('\n', Notes, %s) WHERE Id=%d",
GetSQLValueString($_POST['note'], "text"),
GetSQLValueString($_POST['Id'], "int"));
Кроме того, ваша функция GetSQLValueString()
автоматически упаковывает «текстовые» параметры в кавычки, поэтому вам нужно удалить кавычки вокруг заполнителей.
Iтакже изменил местозаполнитель идентификатора на %d
, так как я предполагаю, что вы ожидаете число.
Вы можете получить выгоду от включения отчетов об ошибках для разработки.Эта ошибка (и, возможно, другая, связанная с неопределенной переменной $Notes
) могла бы упростить отладку.
Поместите ее в начало вашего скрипта (только для разработки)
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Personal Crusade
Удалите библиотеку 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']
));
Лучший подход
Рассмотрите возможность сохранения каждой записи заметки в отдельнойтаблица с отношением внешнего ключа к родительскому элементу "Lead" и меткой времени создания.Таким образом, вы просто извлекаете все дочерние записи заметки в порядке создания, и новые записи просто вставляются.
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;