Использование PHP версии 7.1.9, MariaDB 10.1.26.
Я отправляю массив данных формы в базу данных MySQL.Форма позволяет добавлять динамические входы, при добавлении динамических входов они выглядят так:
// I have removed additional html form code for brevity
<input type="text" name="mac[]">
<input type="text" name="mac[]">
<input type="text" name="mac[]">
etc...
Иногда эти входы будут пустыми, это разрешено.Когда входные данные пусты, я хочу вставить значение NULL
в мою базу данных.Вот где у меня проблемы.
Я убедился, что для моей таблицы базы данных установлено значение:
- allow null = yes
- default - null
Мой PHP-код для обработки отправки формы ниже (пожалуйста, не обращайте внимания на любые уязвимости безопасности, это упрощенный код) ;
// I have removed additional php code for brevity
$arr_mac = $_POST['mac'] ? "'".$_POST['mac']."'" : 'NULL';
for ($i = 0; $i < count($arr_mac); $i++) {
$sql = "INSERT INTO staff (mac) VALUES ( ".$arr_mac[$i]." )
}
Я получаю ошибку;
SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1064 В синтаксисе SQL имеется ошибка;проверьте правильность синтаксиса в руководстве, соответствующем версии вашего сервера MySQL .. ..
Когда я var_dump(mac)
получаю;
[mac] => Array
(
[0] =>
[1] =>
[2] =>
)
Если я изменю PHP наследующее (обратите внимание на дополнительные ' '
) во вставке, запрос выполняется успешно, , но вместо null
значений, empty
значения вставляются в базу данных.
$arr_mac = $_POST['mac'] ;
for ($i = 0; $i < count($arr_mac); $i++) {
$sql = "INSERT INTO staff (mac) VALUES (' ".$arr_mac[$i]." ')
}
Любой совет приветствуется.