|
|
|
| Народ, есть такой ситуэйшн. В форме куча полей, по которым потом формируется здоровый запрос к базе. Некоторые из этих полей могут быть незаполненными. Типы данных соответствующих полям колонок в базе тоже совершенно разные.
Нужно: проверить все поля на статус "заполненности", и если поле пустое, присвоить ему строковое значение "null".
Проблема: есть код:
<?
foreach($_POST as $var) {
if (empty($var)) {
$var='null';
}
}
?>
|
который, по идее, должен проверять все исходящие значения полей и, в случае незаполненности, присваивать им null. Но он НЕ ДЕЛАЕТ ЭТОГО! Я не понимаю, в чем же загвоздка, может, суперглобальные массивы нельзя прогонять по foreach?!!
З.Ы.: в результате в распечатанном запросе вижу:
insert into table values (null, "abc", "def", 2, 45, "blablabla", , 123456)
|
т.е. вместо поля, где должно быть null, идет пропущенное значение, что приводит, естессно, к краху запроса... ((( | |
|
|
|
|
|
|
|
для: Anwor
(16.04.2006 в 12:58)
| | правельно, вы присвоили переменной var значение null, в следствие чего $_POST не меняется.
Этот код будет более правельным.
<?
foreach($_POST as $key=>$var) {
if (empty($var)) {
$_POST[$key]='null';
}
}
?>
|
Кстати, вы можете в свойствах таблицы указать какие именно данные могут быть пустыми, тогда их вообще можно будет не указывать в запросе. | |
|
|
|
|
|
|
|
для: AKiRA
(16.04.2006 в 13:09)
| | Во, спасибо, разрулили!
А по поводу последнего абзаца: подразумевается параметр not null? Если да, то у меня вся база уже по этому принципу оптимизирована, но фишка в том, что если не указывать значения вообще, то надо использовать сложный запрос INSERT, т.е. сначала перебрать по пальцам все имена столбцов, в которые всё заносим, а потом все значения, которые заносим. Как вариант - возможно, но в моей форме и так слишком много полей... | |
|
|
|