Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Формирование запроса в зависимости от введённых


Автор: Avaj 22.7.2010, 05:49
Есть таблица с полями a, b, c, d, e, в которой a и b - NOT NULL.
Есть форма с полями a, b, c, d, e, в которой обязательны для ввода только a и b.
И нужно занести в таблицу данные, введённые с формы, учитывая, что поля c, d, e могут быть пустыми.

Не могу сообразить как написать такой "динамический" запрос.

Конечно можно делать проверки isset для каждого поля формы и в зависимости от них дабавлять к запросу поля ( как тут http://forum.vingrad.ru/topic-121458.html ), но это как-то криво  smile,

может есть какая-нибудь удобная библиотека для этого, или стандартный класс какой-нить?

Автор: Photon 22.7.2010, 08:32
Даже если ты в форме ничего не введёшь, на сервер просто придут пустые поля..
Т.е. будет например $_REQUEST['temp_data'] = ''

Автор: CruorVult 22.7.2010, 09:21
Цитата(Avaj @  22.7.2010,  05:49 Найти цитируемый пост)
Конечно можно делать проверки isset для каждого поля формы и в зависимости от них дабавлять к запросу поля


В любом случае нужно делать проверку isset, но не для всех полей, а для обязательных. Если валидация не прошла, то и пытаться в базу что-то запихнуть не нужно.
А для осатальных полей просто указываешь значение из реквеста, если оно пустое - ничего страшного не случится.

Автор: skyboy 22.7.2010, 10:33
дополнять за автора - гиблое дело, но все же.
если есть поля, в которых может быть NULL значение, то неужель запросы эквивалентны:
Код

insert into t(a,b,c) values(1,2,'')

и
Код

insert into(a,b) values(1,2)
?

Автор: Avaj 22.7.2010, 11:04
Да, чё-то я не въехал в свою проблему. smile 
А как при bind'ить NULL в prepared statement?

Автор: skyboy 22.7.2010, 11:17
в mysqli http://ua2.php.net/manual/en/mysqli-stmt.bind-param.php#96148

Автор: Avaj 22.7.2010, 13:53
skyboy

    
Цитата

в mysqli вполне можно


а как? Я пытался так :

Код

bind_param("s","NULL");
bind_param("NULL");
bind_param(NULL);


и не получается.


А если вот так:

Код

$Null = Null;
bind_param("s", $Null);
, то получается  smile 

Автор: skyboy 22.7.2010, 14:36
Цитата(Avaj @  22.7.2010,  12:53 Найти цитируемый пост)
а как?

четыре минуты открывал ссылку? smile

Автор: Avaj 22.7.2010, 14:41
Цитата

You can, in fact, use mysqli_bind_parameter to pass a NULL value to the database. simply create a variable and store the NULL value (see the manpage for it) to the variable and bind that. Works great for me anyway.
 - це ж слова, я обычно примеры сразу смотрю, а их нет.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)