Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Непонятное поведение is_numric [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Без описания
spsu
Отправлено: 11 Апреля, 2013 - 00:15:09
Post Id



Частый гость


Покинул форум
Сообщений всего: 176
Дата рег-ции: Нояб. 2012  


Помог: 3 раз(а)




OrmaJever пишет:
spsu вы хотите сделать из мухи слона.
Если у вас в запрос нужно вставить строку или число то пропустить её через mysqli_real_escape_string и возьмите в кавычки в запросе, если там может быть только число то приведите переменую к инту и всё.
(Добавление)
Конешно из одной строки можно сделать десять, но лично я этого не понимаю.

Мной движет лень поэтому я написал класс наследник от mysqli который имеет метод insert.
Туда передается ассоциативный массив, каждый ключ имя поля значение значение этого поля.
Вот значения от-туда автоматически приводятся в нужный вид и формируется INSERT запрос.
Все, это как мне кажется лучше чем каждый раз писать простые INSERT руками, подготавливая данными руками..
+Однажды можно забыть проэкранировать данные и будет беда.
А так кол-во кода уменшается.
И помоему это неплохой подход.
 
 Top
caballero
Отправлено: 11 Апреля, 2013 - 00:23:35
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
И помоему это неплохой подход.

подход во первый неграмотный -типы предаваемые в запрос должны зависеть исключительно от типов полей табоицы БД

во вторых подход бессмысленный. Библиотека ADODB делает то же самое - автоматически генерит запросы на вставку и удаление. Только при этом обработку переменной как строки делает в зависимости от типа поля в БД.
а заодно проверяет если ли такое поле в Бд чтобы случайный член массива не выдал кривой SQL.
(Добавление)
представь что у тебя в строковом поле целое число - ты передаешь параметр проверяешь что он целое и генеришь SQL который выдает ошибку.

тогда уж лучше тупо брать в кавычки все переменные - mysql не ругается если целое число в кавычках.

(Отредактировано автором: 11 Апреля, 2013 - 00:27:27)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
esterio
Отправлено: 11 Апреля, 2013 - 00:27:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




забыл как такой прием називается. суть ы том что ес ь таблицы для каждого типа отдельная. структура являет собой ключ и значение. так вот там такой подход подходит для определения в какую таблицу делать запись. а то что вы себе набумали плохо. так например постом приходят все строкы. str_* не байтозащищенные функции. иньекцию словите на раз
 
 Top
spsu
Отправлено: 11 Апреля, 2013 - 00:31:21
Post Id



Частый гость


Покинул форум
Сообщений всего: 176
Дата рег-ции: Нояб. 2012  


Помог: 3 раз(а)




Цитата:
иньекцию словите на раз

Как?
В принципе сейчас подумал, как вариант как в Propel сделано.
На основе схемы генерируется таблица , и данные в какой таблице какие типы полей..
Цитата:
представь что у тебя в строковом поле целое число - ты передаешь параметр проверяешь что он целое и генеришь SQL который выдает ошибку.

Откуда ошибка?
Строковые параметры можно передавать,... И без кавычек.

(Отредактировано автором: 11 Апреля, 2013 - 00:34:16)

 
 Top
caballero
Отправлено: 11 Апреля, 2013 - 00:32:51
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
забыл как такой прием називается. суть ы том что ес ь таблицы для каждого типа отдельная. структура являет собой ключ и значение. так вот там такой подход подходит для определения в какую таблицу делать запись.

видимо речь об activerecord

здесь проблемма в другом. Если придет целое число для сравнения с полем типа varchar то не будет кавычек и как следствие синтаксическая ошибка SQL
Это в типизированых языках можно строить запрос искючительно по типу переменной
(Добавление)
Цитата:
Строковые параметры можно передавать,... И без кавыче

нельзя если строковое поле в Бд
как по твоему сервер БД отличит без кавычек это строка или имя поля?

(Отредактировано автором: 11 Апреля, 2013 - 00:36:35)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
spsu
Отправлено: 11 Апреля, 2013 - 00:42:00
Post Id



Частый гость


Покинул форум
Сообщений всего: 176
Дата рег-ции: Нояб. 2012  


Помог: 3 раз(а)




Цитата:
как по твоему сервер БД отличит без кавычек это строка или имя поля?

Да тут недочет... Зн. сделаю генерацию массива таблиц с данными о типах полей.
Всем спасибо.
 
 Top
caballero
Отправлено: 11 Апреля, 2013 - 00:47:21
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Зн. сделаю генерацию массива таблиц с данными о типах полей.

типы полей можно выбирать с информационной схемы Бд - не надо ничего генерировать


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
spsu
Отправлено: 11 Апреля, 2013 - 00:49:43
Post Id



Частый гость


Покинул форум
Сообщений всего: 176
Дата рег-ции: Нояб. 2012  


Помог: 3 раз(а)




caballero пишет:
Цитата:
Зн. сделаю генерацию массива таблиц с данными о типах полей.

типы полей можно выбирать с информационной схемы Бд - не надо ничего генерировать

Зачем делать лишний запрос?
Каждый раз\да даже один раз.
Мало вижу в этом смысла.
Если можно сгенерировать сразу из xml\uml схемы массив с типами полей, и сразу же запрос для ссоздание БД.
 
 Top
DelphinPRO
Отправлено: 11 Апреля, 2013 - 00:55:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Ужас. Вместо того, чтобы упрощать программу, вы ее усложняете, вводя новые сущности без острой на то необходимости.

Простота - залог здоровья. Здоровья вашей программы. © не помню где вычитал, но абсолютно согласен с этим утверждением.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
esterio
Отправлено: 11 Апреля, 2013 - 00:59:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




схему бд можно закешировать и не будет левых запросов
 
 Top
spsu
Отправлено: 11 Апреля, 2013 - 01:04:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 176
Дата рег-ции: Нояб. 2012  


Помог: 3 раз(а)




Если надо применить какуе-то функцию при вставке к параметру. Как сделать это просто получив структуру БД.
Ни как.
А через такую схем много полезного можно добавить.
 
 Top
esterio
Отправлено: 11 Апреля, 2013 - 01:15:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




посмотрите в сторону active record. много полезного узнаете
 
 Top
spsu
Отправлено: 11 Апреля, 2013 - 04:21:06
Post Id



Частый гость


Покинул форум
Сообщений всего: 176
Дата рег-ции: Нояб. 2012  


Помог: 3 раз(а)




esterio пишет:
посмотрите в сторону active record. много полезного узнаете

Начал читать про Active Record в Yii понял что запарюсь все нужное реализовывать.
Качаю Propel...
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB