тихо! человек изобретает mysqli! еще чуть-чуть и дозреет до ооп. обратите внимание, что вся эта срань на глобалах т.к. прямоходящие на этом континенте еще не получили достаточного распространения без обид! Alex_pac Итак, я разрушу ваши стереотипы по написании приложений с использованием доступом к MYSQL через PHP растерзал в клочья и растоптал, экий ты свирепчик! =) ты эту хренотень в каком году вычитал?
я прекрасно разбираюсь в ОПП, однако оно не способно дать того функционала который дают Global фукнции. Очень не удобно понимаете ли писать новые классы которые основываются на этой библиотеке, зная что они работать не будут пока не произойдет наследование. Причем если будет несколько классов, то они будут все разные что приведет к дублированию подключения к базе данных что недопустимо. Область базы данных я считаю является исключительной и заслуживает выделения ей Global переменных и функций, так как должна работать ВЕЗДЕ будь то класс или процедура или вообще просто набор дейтвий + ВСЕ это должно быть едино, все параметры для всех систем сайта которые эту библиотеку используют должны быть ЕДИНЫМИ так как подключение всего ОДНО. Если все это принять как должное то вырастают крылья, ибо ограничений больше нет, просто пиши $res=sql_read("SELECT * FROM"); и не думай что класс не подключен или подключение не прописано. ВСЕ УЖЕ сделано! создавай!
Наглая ложь! В-нулевых, она ***ть, ***ный ***ц, ЧТО-ТО ПИШЕТ НА ЭКРАН И ГАСИТ СКРИПТ ПРИ ОШИБКАХ. Я понял что данные неправильные, база не выполнила операцию и все пучком. Но эта с***ная библиотека мне оборвала скрипт! Какое она имела ***ть право?!!! Во-первых, нужно еще не забыть про sql_connection(), т. е. отложенного подключения оно пока не умеет. Во-вторых, как только мне нужно два коннекта данная библиотека сливается в никуда. Она не умеет принимать линк на коннект. Она даже не умеет работать с устанавливаемым коннектом. Она надеется, что тот коннект, который идет в mysql по умолчанию никто не попортит. В-третьих, она не умеет транзакциии. Про разницу mysql и mysqli пусть расскажут другие. UPD: здесь нужно еще не забыть про sql_connection(), т. е. отложенного подключения оно пока не умеет. и здесь Она даже не умеет работать с устанавливаемым коннектом. Она надеется, что тот коннект, который идет в mysql по умолчанию никто не попортит. я наврал.
чувак, это все реализуется на коленке в статик классе, даже без синглтонов и прочих бубнов. по этому принципу у меня работает соап-клиент. признайся, ты просто не любишь "эти ваши противные оопэ"
igordata А чем статик класс лучше функций? Ну, кроме группировки а-ля namespace. И, конечно, sqlQuery($sql), явно короче (что в большинстве случаев удобнее) чем DB::query($sql);
товарищ по-меньше эмоций и больше по делу. если вы чтото не поняли не надо извергать гнев, надо просто спросить. а смысл продолжать скрипт если неверный запрос или база данных не работает? Если вам не нравится вид, измените SQL_ERROR_TEMP и будет вам счастье работа c N количеством баз данных не рассматривалась непонимаю зачем вам они? вы не уверены своих действиях?
Alex_pac Молодец, попытка - не пытка, а теперь скорее беги на урок, а-то одноклассники уже заждались.
Не работает главная база - подключусь к дублирующей (например). Или буду работать на файлах. Данные вчерашние, но основная функциональность сайта сохранена и это лучше чем белый экран. Если запрос неверен, то я напишу пользователю, что он ввел не верные данные и попрошу повторить ввод. Зачем же скрипт то гробить? Я вообще не хочу выводить ошибки пользователю, а хочу их логировать в файл. Вы не знаете зачем нужны транзакции? Причем тут мои действия. Могут придти неверные данные. Может затупить сторонний сервис. Может глюкнуть сама БД или коннект к ней.
это не попытка, а законченное програмное изделие которое может и уже применяется и будет применяться во всех моих проектах, ибо его простота и возможности очевидны.
Alex_pac Продолжай. Для первого раза нормально получилось. Может 5-6 версии (через пару годиков) и правда будут применимы.
Как же вы допустили такую программную конструкцию которая позволяет неверные запросы отправлять? надо подумать
насчёт простоты и возможностей хотел бы отметить один из моих любимых приёмов работы с базой данных, когда данные берутся напрямую из запроса, что значительно сокращает код: HTML: <form method="post"> <div><input type="hidden" name="id" value="1"></div> <div>Заголовок статьи: <input type="text" name="title"></div> <div>Текст статьи: <textarea name="text"></textarea></div> <div><input type="submit" value="Сохранить изменения"></div> </form> PHP: <?php include('database.php'); $database = new database('host', 'user', 'pass', 'base'); $database->query("UPDATE `articles` SET `title`={title}, `text`={text} WHERE `id`={id}", $_POST); ?> И, к тому же, все данные автоматически экранируются
А почему бы мне ее не допустить? Зачем я буду тратить время и силы на простые проверки, когда с этим прекрасно справиться сама БД. На мой взгляд, очень точное замечание. tommyangelo Оно и сейчас вполне применимо. Другой вопрос "где оно применимо?" Да можно сегодня создать сайт, который будет работать. В конце концов какая разница чем послать запрос и как взять результат выборки. Вопрос в том какими словами будут материть программиста завтра, когда потребуется серьезно усложнить логику.
Gromo Я пока не добрался до плэсйсхолдеров: PHP: <?php $db = SQLDBFactory::getDB(); $arrUpd=array('title'=>$_POST['title'], 'text'=>$_POST['text']); $db->update($arrUpd, 'articles', (int)$_POST['id']);
Alex_pac, я так делаю. потом граблю ошибки, пишу в лог, затем если ошибку могу исправить сам отправляю в парсер, он поправляет всякую мелочевку или перестраивает запрос до корректного зы: mysqli рулит. почитайте про него, может что-то почерпнёте для себя
Не по синтаксису, а по данным. Банальный пример - попытка ввода пользователя с уже существующим логином. Да, можно послать запрос и проверить наличие. Можно даже подрубить AJAX и красиво говорить пользователю, что введенный логин уже занят. Это все равно не спасет от двух пользователей, которые одновременно решили зарегистрировать один и тот же логин. Есть случаи, когда задержка по времени между отправкой формы и вводом в базу увеличивается, что повышает вероятность описанного события. Можно привести примеры других случаев: длина значения больше допустимой, значение не попадает в заданные диапазон или перечисление.
о нет. мне лень писать mysqli_connect и сцылки на подключения в mysqli_query, что уж говорить про sql_read и sql_insert так что от mysql_connect оно далеко не ушло.