За последние 24 часа нас посетили 18357 программистов и 1639 роботов. Сейчас ищет 1661 программист ...

Класс для облегчения рутины работы с базой данных MySQL

Тема в разделе "Решения, алгоритмы", создана пользователем Gromo, 23 мар 2011.

  1. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    тихо! человек изобретает mysqli! еще чуть-чуть и дозреет до ооп. обратите внимание, что вся эта срань на глобалах т.к. прямоходящие на этом континенте еще не получили достаточного распространения :D

    без обид!

    Alex_pac
    Итак, я разрушу ваши стереотипы по написании приложений с использованием доступом к MYSQL через PHP
    растерзал в клочья и растоптал, экий ты свирепчик! =)
    ты эту хренотень в каком году вычитал?
     
  2. Alex_pac

    Alex_pac Активный пользователь

    С нами с:
    11 апр 2011
    Сообщения:
    285
    Симпатии:
    1
    Адрес:
    Россия, Тольятти
    я прекрасно разбираюсь в ОПП, однако оно не способно дать того функционала который дают Global фукнции.

    Очень не удобно понимаете ли писать новые классы которые основываются на этой библиотеке, зная что они работать не будут пока не произойдет наследование.

    Причем если будет несколько классов, то они будут все разные что приведет к дублированию подключения к базе данных что недопустимо.

    Область базы данных я считаю является исключительной и заслуживает выделения ей Global переменных и функций, так как должна работать ВЕЗДЕ будь то класс или процедура или вообще просто набор дейтвий + ВСЕ это должно быть едино, все параметры для всех систем сайта которые эту библиотеку используют должны быть ЕДИНЫМИ так как подключение всего ОДНО.

    Если все это принять как должное то вырастают крылья, ибо ограничений больше нет, просто пиши

    $res=sql_read("SELECT * FROM");

    и не думай что класс не подключен или подключение не прописано. ВСЕ УЖЕ сделано! создавай!
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    ну да, про паттерны типа singleton - не, не слышал
    хлам
     
  4. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Наглая ложь!
    В-нулевых, она ***ть, ***ный ***ц, ЧТО-ТО ПИШЕТ НА ЭКРАН И ГАСИТ СКРИПТ ПРИ ОШИБКАХ. Я понял что данные неправильные, база не выполнила операцию и все пучком. Но эта с***ная библиотека мне оборвала скрипт! Какое она имела ***ть право?!!!
    Во-первых, нужно еще не забыть про sql_connection(), т. е. отложенного подключения оно пока не умеет.
    Во-вторых, как только мне нужно два коннекта данная библиотека сливается в никуда. Она не умеет принимать линк на коннект.
    Она даже не умеет работать с устанавливаемым коннектом. Она надеется, что тот коннект, который идет в mysql по умолчанию никто не попортит.
    В-третьих, она не умеет транзакциии.
    Про разницу mysql и mysqli пусть расскажут другие.

    UPD: здесь
    нужно еще не забыть про sql_connection(), т. е. отложенного подключения оно пока не умеет.
    и здесь
    Она даже не умеет работать с устанавливаемым коннектом. Она надеется, что тот коннект, который идет в mysql по умолчанию никто не попортит.
    я наврал.
     
  5. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    сам прочитает. много чести - рассказывать
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Маммамиа! Пойду я отсюда...
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    чувак, это все реализуется на коленке в статик классе, даже без синглтонов и прочих бубнов. по этому принципу у меня работает соап-клиент. признайся, ты просто не любишь "эти ваши противные оопэ"
     
  8. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    igordata
    А чем статик класс лучше функций? Ну, кроме группировки а-ля namespace.

    И, конечно, sqlQuery($sql), явно короче (что в большинстве случаев удобнее) чем DB::query($sql);
     
  9. Alex_pac

    Alex_pac Активный пользователь

    С нами с:
    11 апр 2011
    Сообщения:
    285
    Симпатии:
    1
    Адрес:
    Россия, Тольятти
    товарищ по-меньше эмоций и больше по делу. если вы чтото не поняли не надо извергать гнев, надо просто спросить.

    а смысл продолжать скрипт если неверный запрос или база данных не работает?
    Если вам не нравится вид, измените SQL_ERROR_TEMP и будет вам счастье

    работа c N количеством баз данных не рассматривалась

    непонимаю зачем вам они? вы не уверены своих действиях?
     
  10. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Alex_pac
    Молодец, попытка - не пытка, а теперь скорее беги на урок, а-то одноклассники уже заждались.
     
  11. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Не работает главная база - подключусь к дублирующей (например). Или буду работать на файлах. Данные вчерашние, но основная функциональность сайта сохранена и это лучше чем белый экран.

    Если запрос неверен, то я напишу пользователю, что он ввел не верные данные и попрошу повторить ввод. Зачем же скрипт то гробить?

    Я вообще не хочу выводить ошибки пользователю, а хочу их логировать в файл.

    Вы не знаете зачем нужны транзакции?

    Причем тут мои действия. Могут придти неверные данные. Может затупить сторонний сервис. Может глюкнуть сама БД или коннект к ней.
     
  12. Alex_pac

    Alex_pac Активный пользователь

    С нами с:
    11 апр 2011
    Сообщения:
    285
    Симпатии:
    1
    Адрес:
    Россия, Тольятти
    это не попытка, а законченное програмное изделие которое может и уже применяется и будет применяться во всех моих проектах, ибо его простота и возможности очевидны.
     
  13. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Alex_pac

    Продолжай. Для первого раза нормально получилось.

    Может 5-6 версии (через пару годиков) и правда будут применимы.
     
  14. Alex_pac

    Alex_pac Активный пользователь

    С нами с:
    11 апр 2011
    Сообщения:
    285
    Симпатии:
    1
    Адрес:
    Россия, Тольятти
    Как же вы допустили такую программную конструкцию которая позволяет неверные запросы отправлять?

    надо подумать [​IMG]
     
  15. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    насчёт простоты и возможностей хотел бы отметить один из моих любимых приёмов работы с базой данных,
    когда данные берутся напрямую из запроса, что значительно сокращает код:

    HTML:
    1.  
    2. <form method="post">
    3.   <div><input type="hidden" name="id" value="1"></div>
    4.   <div>Заголовок статьи: <input type="text" name="title"></div>
    5.   <div>Текст статьи: <textarea name="text"></textarea></div>
    6.   <div><input type="submit" value="Сохранить изменения"></div>
    7. </form>
    8.  
    PHP:
    1. <?php
    2. include('database.php');
    3. $database = new database('host', 'user', 'pass', 'base');
    4. $database->query("UPDATE `articles` SET `title`={title}, `text`={text} WHERE `id`={id}", $_POST);
    5. ?>
    И, к тому же, все данные автоматически экранируются :)
     
  16. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    А почему бы мне ее не допустить? Зачем я буду тратить время и силы на простые проверки, когда с этим прекрасно справиться сама БД.

    На мой взгляд, очень точное замечание.

    tommyangelo
    Оно и сейчас вполне применимо. Другой вопрос "где оно применимо?"

    Да можно сегодня создать сайт, который будет работать. В конце концов какая разница чем послать запрос и как взять результат выборки. Вопрос в том какими словами будут материть программиста завтра, когда потребуется серьезно усложнить логику.
     
  17. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Gromo
    Я пока не добрался до плэсйсхолдеров:
    PHP:
    1. <?php
    2. $db = SQLDBFactory::getDB();
    3. $arrUpd=array('title'=>$_POST['title'], 'text'=>$_POST['text']);
    4. $db->update($arrUpd, 'articles', (int)$_POST['id']);
     
  18. Alex_pac

    Alex_pac Активный пользователь

    С нами с:
    11 апр 2011
    Сообщения:
    285
    Симпатии:
    1
    Адрес:
    Россия, Тольятти
    Бд будет хавать у тебя не валидные по ситаксису запросы? не уверен что так кто либо делает. [​IMG]
     
  19. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    Alex_pac, я так делаю. потом граблю ошибки, пишу в лог, затем если ошибку могу исправить сам отправляю в парсер, он поправляет всякую мелочевку или перестраивает запрос до корректного

    зы: mysqli рулит. почитайте про него, может что-то почерпнёте для себя
     
  20. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    Не по синтаксису, а по данным. Банальный пример - попытка ввода пользователя с уже существующим логином. Да, можно послать запрос и проверить наличие. Можно даже подрубить AJAX и красиво говорить пользователю, что введенный логин уже занят.
    Это все равно не спасет от двух пользователей, которые одновременно решили зарегистрировать один и тот же логин. Есть случаи, когда задержка по времени между отправкой формы и вводом в базу увеличивается, что повышает вероятность описанного события.

    Можно привести примеры других случаев: длина значения больше допустимой, значение не попадает в заданные диапазон или перечисление.
     
  21. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    mysqli это кстати не только ООП, но и тот же функционал в глобальных функциях
     
  22. Alex_pac

    Alex_pac Активный пользователь

    С нами с:
    11 апр 2011
    Сообщения:
    285
    Симпатии:
    1
    Адрес:
    Россия, Тольятти
    вообщем делаю вывод что нужна версия MYSUBD под mysqli
     
  23. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    :D
     
  24. titch

    titch Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    847
    Симпатии:
    0
    mysqli полностью перекрывает ваш функционал с лихвой. можете не заморачиваться
     
  25. Alex_pac

    Alex_pac Активный пользователь

    С нами с:
    11 апр 2011
    Сообщения:
    285
    Симпатии:
    1
    Адрес:
    Россия, Тольятти
    о нет. мне лень писать mysqli_connect и сцылки на подключения в mysqli_query, что уж говорить про sql_read и sql_insert так что от mysql_connect оно далеко не ушло.