Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > Функция с необязательными параметрами |
Автор: liliputochka 14.2.2010, 22:09 | ||||||||||||||||||
День добрый! Я написала функцию, в которой некоторым параметрам задала значения по умолчанию. Когда я в функцию не передаю необязательные параметры и проверяю их значения в функции, то переменные приняли заданные по умолчанию мною значения. Но я вставляю эти переменные в sql-выражение, а значения не вставляются! Вы не знаете почему?
Выдает ошибку:
При этом: 1)
Пишет:
2)
Пишет:
3)
Перестает жаловаться на данную переменную и переходит к следующей переменной. 4)
Пишет:
|
Автор: liliputochka 14.2.2010, 23:23 | ||||||
Выдается ошибка
MySQL 5.0
|
Автор: bars80080 14.2.2010, 23:35 |
name varchar(100) unique, я так понимаю, должна соблюдаться уникальность значения в поле. ты уверен, что у тебя уже нет строк с name='JUM'? 3_min int, 3_max int, 4_min int, 4_max int, 5_min int, 5_max int '', '', '', '', '', '') у меня, насколько помню, ругается на пустые строки, при вставке в числовые поля |
Автор: Fortop 14.2.2010, 23:58 | ||||||
Как вызывается функция? Потому что
Дает
|
Автор: skyboy 15.2.2010, 00:01 |
ну, обычно в таких ситуациях сообщение об ошибке "Duplicate entry for key" у меня вставка произошла. phpmyadmin + mysql 55.1.37 хотя ожидал подвоха и от "0:20:00", и от пустых строк для полей типа int это все сообщение или все же провинившаяся колонка называется вслух? |
Автор: Fortop 15.2.2010, 00:07 |
В 5.1.41 ругается на пустые строки. Впрочем с указанием имени конкретного столбца. Incorrect integer value: '' for column '4_max' at row 1 |
Автор: liliputochka 15.2.2010, 09:37 | ||||||||
Данная функция написана в классе. Я создаю объект класса
Затем вот таким образом вызываю эту функцию
соответствующие параметры $three_min, $three_max, $four_min, $four_max, $five_min, $five_max передаются через заполненную форму. Уверен!
нет, это не все сообщение. Сначала ругается на колонку 3_min, после этого
Начинает ругаться на колонку 3_max. И так далее. |
Автор: awers 15.2.2010, 10:54 |
liliputochka, ты лучше сделай show create table *table_name* со своей таблицей и покажи сюда. Причём тут кстати пхп? ПыСы: Лилипуточка мужского рода - по меньшей мере странно |
Автор: liliputochka 15.2.2010, 11:21 |
Я же уже выложила структуру таблицы?! Тот sql-запрос, что, пролистав наверх, вы увидите и создал таблицу, в которую заносятся данные. Ну так не работает именно php-код, там где по всем учебникам переменным должны присваиваться значения. Вроде присваиваются, но при подстановке этих значений в необходимые мне места - значения как бы испаряются и переменные оказываются вовсе не определенные! Да! Мне тоже понравилось! Очень смешно! Не хочу хвалится, но может я дошла до такого уровня, что ко мне относятся не как "дурочка-девушка-программист", а как "свой парень"!? |
Автор: MoLeX 15.2.2010, 11:38 | ||
Тсссс, бережем нервы. Не кто не кого не хотел обидеть! |
Автор: sTa1kEr 15.2.2010, 12:05 | ||||||
liliputochka, нужно проверять данные перед тем, как добавлять их в запрос. Хотя бы на соответствие типу или явно приводить их нужному типу http://php.net/types.type-juggling
Добавлено через 4 минуты и 45 секунд
А для того, что бы использовались значения по умолчанию, нужно опустить соответствующие параметры при вызове функции. Т.е. при вызове
Параметры $three_min, $three_max и пр. будут содержать значения по умолчанию. |
Автор: awers 15.2.2010, 13:13 |
liliputochka, госпади ![]() ![]() |
Автор: liliputochka 15.2.2010, 13:38 | ||||
Большое спасибо! Только у меня дело в том, что эти параметры иногда могут принимать какие-то значение, а иногда могут быть пустыми. Мне для подобной реализации надо делать так:
Так или нет? Спокойной ночи! Приятных вам снов! |
Автор: Fortop 15.2.2010, 14:32 | ||||
Т.е. даже вы сами не знаете, когда у вас есть параметры перед вызовом функции? Тогда рекомендую сделать так
|
Автор: sTa1kEr 15.2.2010, 14:53 | ||
Если вам нужно для всех этих параметров задать значение по умолчанию "0", то можно оставить вызов функции как есть со всеми параметрами. Достаточно будет приводить значения этих параметров к integer, как я описал выше. Если значения по умолчанию могут быть произвольными, то можно сделать сл. образом:
В этом случае параметры будут передаваться только если все шесть значений не равны нулю. |
Автор: liliputochka 16.2.2010, 09:20 |
Спасибо всем!!! Вы мне очень помогли! |