В SQL (как и в PHP) существует большая разница между значением NULL
и обычной текстовой переменной, которая имеет буквы NULL.Это автоматически обрабатывается любой приличной библиотекой базы данных, если исходная переменная представляет собой фактический null
(а не текст 'null
') и вы используете библиотеку по назначению.
Вы используетеПользовательская библиотека базы данных, поэтому трудно сказать, в каком случае.Если библиотека не так уж и плоха, она должна предоставить такой синтаксис:
$sql = 'INSERT INTO tbl_lead (client_id, signedupdate, plan_type) VALUES (?, ?, ?)';
$this->GetConnection()->ExecSQL($sql, [
$lastInsertId,
$rowData['signedupdate'],
$rowData['plan_type']
]);
Конечно, необязательно этот синтаксис.Пожалуйста, обратитесь к документации библиотеки, чтобы проверить ее исходный код.
Если это плохая библиотека, она будет предоставлять только экранирующие функции.Если эти функции добавляют кавычки автоматически, вам может повезти с чем-то вроде:
$sql = sprintf('INSERT INTO tbl_lead (client_id, signedupdate, plan_type) VALUES(%s, %s, %s)',
$this->GetConnection()->EscapeValue($lastInsertId),
$this->GetConnection()->EscapeValue($rowData['signedupdate']),
$this->GetConnection()->EscapeValue($rowData['plan_type'])
);
$this->GetConnection()->ExecSQL($sql);
Опять, Я только что создал синтаксис .
В противном случае вы будетепридется обрабатывать все самостоятельно:
$sql = sprintf('INSERT INTO tbl_lead (client_id, signedupdate, plan_type) VALUES(%s, %s, %s)',
$lastInsertId===null ? 'NULL' : "'" . $this->GetConnection()->EscapeValue($lastInsertId) . "'",
$rowData['signedupdate']===null ? 'NULL' : "'" . $this->GetConnection()->EscapeValue($rowData['signedupdate']) . "'",
rowData['plan_type']===null ? 'NULL' : "'" . $this->GetConnection()->EscapeValue($rowData['plan_type']) . "'"
);
$this->GetConnection()->ExecSQL($sql);
Если библиотека даже не предоставляет функции escape, вам следует остановиться здесь и переключиться, например, на PDO.Возможно, в любом случае было бы неплохо переключиться - по моему опыту, StrangelyCasedLibraries (), как правило, имеют сомнительное качество.