Forum Webscript.Ru
Программирование => Perl => Тема начата: Timofey от 30 Октября 2003, 12:22:21
-
как из строки сделать число?
т.е. есть параметр переданный из формы, там число,но после разбора офрмы получается строка, вот эту строку и надо перевести в нормально число, т.к. нуна сделать запрос к базе,там это поле int
-
в perl нет способа явного задания числа или строки
есть лишь тип scalar
в твоем варианте достаточно убедиться что переданный параметр число. для этого достаточно прибавить к нему нулик
-
2ondr
Имхо, не очень хороший выход из ситуации. Насколько я понимаю, любая строка, начинающаяся не с цифры в математических выражениях превращается в 0. Так что, прибавив нолик, не узнаешь, было ли это число или нет.
Может, простейший регэксп?
-
metton
Если ждешь именно число и должно прийти число, то зачем нужно знать было ли это строкой? Если уж горит, то проверь регэкспом или ещё чем нибудь.
Все зависит от конкретного случая.
-
Timofey
IMHO проблем нет когда ты будешь в запросах использовать что-то типа:
.... WHERE id = \'$form_id\' ....
где $form_id - переменная переданная из формы... даже если $form_id будет иметь не числовое значение, запрос просто ничего не вернет и все, а если числовое, то он выберет именно, то что нужно... а регами я бы проверял отсутствие пробелов и одинарных кавычек, не более того... строка или число в скаляре не указывается, но если вставляешь число, даже если оно вида:
$i = "1";
т.е. вроде как текст, но в запросе поймет его как $i = 1; по крайней мере у меня понимает...
-
2ondr
Ситуация: юзер хочет ввести 23, а вместо этого нечаянно вводит 2w (не попадаети он по клавишам, ну что с ним поделаешь? - юзер :D ), а вводимое число, например, идентификатор стираемой записи. Вот и получится что он сотрёт запись с идентификатором 2 вместо 23, что не есть хорошо. Пример, конечно надуман, но выводы, думаю, напрашиваются сами собой. ЛУЧШЕ ТАК НЕ ДЕЛАТЬ! :D
2Phoinix
При выборке, конечно это во многих случаях не критично, но воть если опять же данные вставляются в базу. В этом случае там будет опять же нолик, и можно этого не заметить.
-
metton
ты забыл добавить ИМХО
-
2ondr
То есть ты не согласен со мной? Твои аргументы...
-
metton
Timofey
нуна сделать запрос к базе,там это поле int
вопрос - как сделать запрос, а не вставить данные в базу.
-
2Phoinix
Ок. Как тебе запрос на удаление?
-
metton
IMHO начался спор ни о чем...
хуже не станет если запрос на удаление или изменение не пройдет из-за неправильно переданного параметра...