Предполагая, что у вас есть все в массиве $data
:
$query_string = "insert into mytable set a=1, b=2, d1=" .
(isset($data['val1']) ? "'" . $data['val1'] . "'" : 'NULL') . ", d2=" .
(isset($data['val2']) ? "'" . $data['val2'] . "'" : 'NULL') . ", d3=" .
(isset($data['val3']) ? "'" . $data['val3'] . "'" : 'NULL') . ";";
Строка будет содержать, например,.d2=NULL
вместо d2='xyz'
, если значение в массиве не существует или равно null
.
Также необходимо убедиться, что строки, которые вы хотите вставить в запрос, должным образом очищены(например, используя mysql_real_escape_string()
). В моем ответе ваши переменные считаются уже подготовленными и обработанными , поскольку вам нужно было только узнать, как вставить NULL
значения вместо имеющихся у вас переменных.вопрос был только во вводе NULL
значений в запросе, основанном на значении переменных, я не думаю, что подробное обсуждение санации здесь было бы хорошей идеей.Вы можете найти гораздо более подробную информацию о SQL-инъекциях и о том, как их предотвратить в PHP, здесь: Лучший способ остановить SQL-инъекции в PHP .Удачи!:)