|
|
|
|
|
для: Тень*
(14.05.2010 в 23:51)
| | > Вообще, в $_GET/$_POST/... могут быть массивы.
Ну и пусть идут лесом... Неправильно это. http предполагает передачу ключ-значений, а не массивов, на крайняк - в качестве значения указать json-овый массив или сериализованый...
> $mysql->magicQuotes = FALSE;
А это вообще надо выкинуть нафиг, неужели непонятно?
Ну здесь ясно, да. | |
|
|
|
|
|
|
|
для: Николай2357
(15.05.2010 в 10:51)
| | 1. С этим довольно легко разобраться, наверно как-раз в ближайшее время и буду пробовать...
2. Вот то что я хотел услышать с самого начала... Буду делать.
3. С бэктрейсом буду смотреть, а errorMessage можно выставить в пустую строку... Она выводится только если $this->debug = false
4. Вот честно незнал, а меня давно доставали эти нумерованные поля, спасибо.
5. -
6. я думаю в таком случае как-раз эти вопросики использовать не надо, а вставить запрос именно так как написали Вы...
7. Да, у меня с sql не очень, многого не знаю, как и про эти игнор и апдейт...
8. Бывает необходимо вставить число, но обернуть его в кавычки (Вы же пользовались enum/set)...
> Про ресурсоемкость и изрядное торможение говорить вообще не приходится.
Кеширование рулит:) | |
|
|
|
|
|
|
|
для: Николай2357
(15.05.2010 в 00:59)
| | Ну, а чтобы мне не инкрменировали троллизм, пару комментов по делу присовокуплю.
1. Уж коль скоро делается класс для работы с SQL запросами, не стоило циклиться на одной mysql_ К тому же это не самая перспективная библиотека. Основной смысл подобных изобретений как раз в том, чтобы безболезненно использовать разные базы данных, которым не чужд SQL
2. В таком большом и громоздком классе почему то не нашлось места установке кодировки соединения. А это очень важный момент, раз уж это класс. То бишь решение универсальное.
3. Смысл метода add_report для меня остался за кадром. Если это претензия на дебаггер, то он совершенно не информативен. Ну выдаст он ошибку SQL, а источника заразы не видно. Тогда уж стоило подумать о функции debug_backtrace(), из которой можно извлечь массу полезного. Полный адрес запроса, его текст и т.д. А если это для логирования подозрительных внешних поползновений, то для чего эта строка?
<?
echo $this->errorMessage;
| Показать хакеру, что таки да, уязвимость где то есть, можно продолжать изыскания?
4. Метод fetch. Там используется mysql_fetch_array() без флагов. Она возвращает два массива в таком случае - для чего?
5. Про магические кавычки сказали уже.
6. Про вопросики. Тут претензия на PDO, это понятно. Не понятно другое, я сильно не вникал правда. Как вот такой запрос туда упихать, в вопросики эти?
<?
"SELECT * FROM table WHERE `id` IN (". implode(',', $id_array) .")"
| я уже не говорю о более сложных вариантах. И вообще, чем удобна такая форма извращений?
Вот представьте себе запрос на 30-50 строк (а то и больше), в котором используется 20-30 переменных... А если там еще ON DUPLICATE KEY UPDATE, то многое придется дублировать. Всычитывать местоположение каждого вопросика и искать сопоставление ему переменной - сущий ад.
Этот способ (да собственно как и весь класс) удобен(?) только на элементарных запросах, которые ну совершенно не требуют столь громадных обработчиков.
7. В примере использования показана только выборка. А как работает INSERT INTO?
При беглом просмотре кода я не нашел возможности использовать такие вещи как IGNORE или тот же крайне полезный ON DUPLICATE KEY UPDATE, да и еще кучу всяких вкусностей... Может я упустил чего, но меня терзают смутные сомнения, что сия конструкция сильно сужает возможности SQL. И главное - совершенно не понятна цель всего этого.
8. если аргумент имеет строковый тип, то если он "numeric", он
просто оборачивается в кавычки
совсем ничего не понял... Так строковый или нет? И зачем нужно числовые (целочисленные) значения в кавычки?
Про ресурсоемкость и изрядное торможение говорить вообще не приходится.
А раз так, то нет смысла и вникать глубже. И этого достаточно было бы для того, чтобы немедленно забыть о таком изобретении, как о страшном сне. | |
|
|
|
|
|
|
|
для: nikita2206
(14.05.2010 в 22:23)
| | Я в таком случае сделаю так, как сделано все остальное на этой страничке, там ведь тоже какая-то инфа выводится? А если я изначально делал эту страничку, то воспользовался бы каким-то подобным решением, т.к. городить например такие конструкции, это по-моему верх идиотизма:
Каждому своё. Я лично считаю верхом идиотизма совать нормально работающие штатные функции в три фуфайки классов и оберток, чтобы выглядело круто, как первый парень на деревне. Кроме улыбки эти поползновения все автоматизировать километрами кода ничего не вызывают. Ну если со стороны конечно. А если приходится разгребать этот бедлам, выдаваемый за красоту и рациональность, то кроме матов.
Отсюда следует, что не
Бывает лучше что-то один раз усвоить, чем писать то, что на пару строк выше.
Потому что изобретателей вагон и маленькая тележка. И у каждого свой, ну конечно же самый лучший, синтаксис. И мне нужно немедленно забыть все, что знал до этого и изучать новые методы, потому что кто то посчитал штатные php функции верхом идиотизма. И изобрел свои, естественно гениальные и супероптимальные.
Если бы в пхп было что-то очень удобное, функциональное, при этом с использованием MVC и "ооп-головного мозга" изначально
Слава Богу, что нет. Я не хочу уподобляться секретарю-машинистке. которая просто набирает тексты в ворде, который сам все (вплоть до орфографии) за неё сделает. Я хочу быть программистом, а не копипастером.
Изобретать велосипеды - да, это гут. Я писал об этом. Для себя, любимого. А вот юзать чужие наработки, Ваши или будь то трижды прославленного ZEND - удел лентяев и штамповщиков.
Так что мечты у всех разные))) Я мечтаю, что бы люди поскорее прозрели и поняли, что ООП- парадигме нет места в веб-строительстве. Есть ничем необоснованный миф, лоббируемый тем же зендом. Не имеющий никакой практической пользы.
Я имю ввиду PHP, а не весь веб. Если уж что то строить с применением ооп, то есть куда более другие инструменты, питон тотже или рельсы. )) | |
|
|
|
|
|
|
|
для: nikita2206
(14.05.2010 в 23:45)
| | Вообще, в $_GET/$_POST/... могут быть массивы. Это типа замечание...
> $mysql->magicQuotes = FALSE;
А это вообще надо выкинуть нафиг, неужели непонятно? | |
|
|
|
|
|
|
|
для: Тень*
(14.05.2010 в 22:46)
| | ну короче вижу один нормальный выход: в htaccess прописать что-то вроде MagicQuotesGPC Off (точно не помню что писать)... в инициализации скрипта написать что-то такое:
<?
if(magic_quotes_gpc()) $_GET = array_map(function($str){
return stripslashes($str);
}, $_GET);
$mysql->magicQuotes = FALSE;
|
| |
|
|
|
|
|
|
|
для: nikita2206
(14.05.2010 в 22:11)
| | > Или может ты предлагаешь стрипслэшить все входные данные сразу, как некоторые делают
Это да. А какое это отношение имеет к базам данных, запросам? Объект твоего класса MySQL ничего не должен знать об источнике данных. Соответственно, заботиться об "стрипслэшенье" (гы гы) надо вне этого объекта. | |
|
|
|
|
|
|
|
для: Николай2357
(14.05.2010 в 20:49)
| | > Вот по порядку. Если мне нужен на страничке один мааалюсенький запросик. Допустим вывести количество посещений. И для этого я должен инициализировать такой огромный объект, в котором 99% функционала - мертвый код. На кой оно?
Я в таком случае сделаю так, как сделано все остальное на этой страничке, там ведь тоже какая-то инфа выводится? А если я изначально делал эту страничку, то воспользовался бы каким-то подобным решением, т.к. городить например такие конструкции, это по-моему верх идиотизма:
<?
$result = mysql_query('SELECT `a`, `b`, `c` FROM `table` WHERE `d` = \''.mysql_real_escape_string($blabla).'\'');
|
> Плюс новый синтаксис, который нужно усвоить.
Бывает лучше что-то один раз усвоить, чем писать то, что на пару строк выше.
> Я никогда не стану слепо доверять какому то бы нибыло фреймворку. Пусть сто раз с пеной у рта доказывают о пользе инкапсуляции. То, чем я не могу управлять, вызывает подозрение и дискомфорт.
Абсолютно согласен. Именно поэтому наверное и рождается столько велосипедов типа моего... Если бы в пхп было что-то очень удобное, функциональное, при этом с использованием MVC и "ооп-головного мозга" изначально, то-есть из коробки, типа дотНета, может было бы меньше велосипедов и люди пользовались бы всем готовым... Но это, видимо, только в мечтах... | |
|
|
|
|
|
|
|
для: Тень*
(14.05.2010 в 20:50)
| | Да, здесь было напряжно, подскажи другой выход? Или может ты предлагаешь стрипслэшить все входные данные сразу, как некоторые делают. Не знаю я как по-другому сделать... | |
|
|
|
|
|
|
|
для: nikita2206
(14.05.2010 в 20:38)
| | Какое отношение имеет magic_quotes_gpc к работе с базой данных? Вот допустим, включён этот режим. Теперь ты вообще не будешь экранировать спец. символы? Откуда ты знаешь источник данных?
Вообще, закрыв глаза на саму необходимость ЭТОГО, тут и других недочётов полно. | |
|
|
| |
|