- 1
- 2
Is there PHP mysql_real_escape_string for postgresql?
pg_escape_string
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−9
Is there PHP mysql_real_escape_string for postgresql?
pg_escape_string
https://www.php.net/manual/en/function.pg-escape-string.php
If your database is a UTF-8 database, you will run into problems trying to add some data into your database...
for securty issues and/or compatability you may need to use the: utf_encode()
$my_data = pg_escape_string(utf8_encode($_POST['my_data']));
--------------
блядь, ну это реально какая-то альтернативная ветвь Homo. Это может денисовцы?
Вот вы меня спрашиваете "почему нельзя писать на пхп".
Вот нельзя с такими людьми находиться на одних ресурсах. Это вопрос гигиены же
Посмотрел, что за функция utf8_encode. Хуй-ня какая-то. Перекодирует ISO8859-1 в UTF-8, больше ничего не умеет. Т. е. она нужна только мудакам из США и Западной Европы, которые путают свою кодировку с UTF-8.
кодировки какие-то однобайтовые
давайте еще рашн апаче вспосмним
— Но почему тогда, например, скобки (круглые, квадратные, фигурные) не входят в ваш список спецсимволов?
Ответ SMM-щика «Альфа-банка»:
— Использование данных символов не рекомендуется, потому что в кодировках разных систем, символы определяется по-разному. Например, если вы создадите пароль в Linux, то потом по этому же паролю в ОС Windows вы не сможете зайти.
Во вселенной «Альфа-банка» в 2019-м году существуют разные кодировки, поэтому использование в пароле символов за пределами базовой латиницы и цифр не рекомендуется.
Если вы работаете за мейнфреймом с EBDIC, то ваш пароль может не подойти в Linx
Одному из комментаторов Banki.ru поддержка «Альфы» ответила, что с 1 октября внедряется комиссия за пополнение карт других банков с «пластика» Альфа-банка: она составит 1,95% (минимум 30 рублей).
Бегите, глупцы!
Не возвращайте мне мой 2007-й.
тут недавно в дотнет-чате человек пришел. говорит, переписал бейс64, изкоробочный говно.
спрашиваю, а что со стандартной реализацией не так?
а он и говорит: нет декодинга и энкодинга в utf-8
https://www.php.net/manual/en/function.pg-delete.php
>> safe
я никогда не спал с мужчиной
ну то есть да, бывало спал
но спал в том смысле, что без секса
ну то есть что считать за секс?
Зачем? Зачем?
На каждую бд своё апи?
Давным-давно есть ODBC, а также PHP Data Objects. Advanced пыхеры вообще Zend Db заюзают.
В PDO есть prepared statement.
А Zend Db это вообще такое недоLINQ-to-SQL (что по идее должно быть портабельно).
В котором свои заковырки, особенности экранирования и багры.
> Values must be escaped or the PGSQL_DML_ESCAPE flag must be specified in flags.
> mysql_real_escape_string
Итд
Нет, ну нахуй. Лучше освоить раз универсальное api и писать на нём. И код будет портабельнее.
Один хер учить детали реализации этого апи под конкретную базу...
Портабельной будет только какая-нибудь key-value хуйня отображающая строку в строку. И то какое-нибудь говно вылезет.
Я не спорю с тем, что "универсальный SQL" это миф.
но если есть возможность посылать его через одинаковый API (да еще и борться с SQL инъекцией) то чому б нi?
> SQL инъекцией
Судя по доке там есть подготовленные запросы.
З.Ы. Помнится, PDO драйвер для мускуля вместо подготовки запросов тупо экранировал и клеил... Обобщённое апи такое обобщённое.
Не возвращать же ошибку...
В нормальных СУБД такого не может быть впринципе
Боже, как хорошо, что я не имею ни малейшего отношения к пыхоговну и мускульговну, это просто блядь can of worms блядь какой-то
Драйвер MySQL не поддерживает должным образом PDO::PARAM_INPUT_OUTPUT через PDOStatement::bindParam(); хотя параметр можно использовать, он не обновляется (т.е. фактический вывод игнорируется).
Охуенно универсальное апи.
А как дела в DAO, ADO, ADO.NET, JDBC, ODBC, PEP 249 и DBI?
Все ли сосут, или только пыхокал?
1) Делаем апи, которое работает везде. Но из практических задач решить может чуть менее чем нихуя.
2) Пытаемся сделать апи, которое умеет всё. Иногда криво. Местами через эмуляцию. Один хер весь код в ифдефах.
3) Делаем экстеншены к общему апи. И получаем ёбаного уродливого кентавра. И весь код в ифдефах.
Выбери свой стул.
0) Забиваем хуй на обобщения и отдаём реальное апи базы.
Сишка тоже может между компиляторами отличаться.
Отличаться может трактование SQL, но API:
* делаем запрос (текстом)
* получаем курсор или таблицу
может быть универсальным
>все
нук покажи мне MySQL-specific говно в JDBC, например?
Тогда тебе достанется апи в котором часть функций работает криво или через эмуляцию, а остальные надо тестить ифдефами... Добро пожаловать в реальный мир.
ради бога
хочеш перформанса -- бери реальный API
> текстом
10/10
А экранировать его чем? )))
> получаем таблицу
Тоже текстом?
mysql_real_escape_string, конечно!
> Тоже текстом?
CSV в строковой переменной.
Средствами драйверв
https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
>Тоже текстом?
нет, объектом. По умолчанию можешь конечно переменную только текстом или числом скачать, хочешь специфичных штук -- завязывайся на драйвер
JDBC API implementation notes в доке к коннектору. Ну и заодно соседние разделы про типы данных, даты и т.п.
З.Ы. И миллион атрибутов для коннектов и запросов.
Хочешь -- не знай как реализована PreparedStatement или что такое DatabaseMetaData, и с типами работай на уровне строк.
единственный отсос это
>MySQL does not support SQL cursors, and the JDBC driver doesn't emulate them
тут и правда плохо
Суть в том, что эта дока -- часть апи. И если её не изучить -- можно запросто обосраться.
то, что разное, отличаться должно.
Linux и Solaris разные, нельзя писать одинаково приложение под них, но какая-то их часть (позикс) одинаковая.
Тоже самое должно быть с СУБД.
Если
работает одинаково, то и API должен быть одинаковый, а не
итд
Или типа мы тут нахуячили апи на object'ах, а ты иди читай доку по конкретной реализации чтобы догадаться во что их кастовать.
Нет.
Зависит от реализации драйвера.
Например я ради лулзов ставил драйвер для csv (пробовал в squirele).
И там даже update/delete нет. И джойны какие-то анскильные, деталей не помню, но очень урезанный функционал.
Драйвер же просто реализовывает интерфейс. В конце концов он может просто кидать NotImplementedException Upd: тьфу, это .нете. В Йаже UnsupportedOperationException.
> он может просто кинуть NotImplemented
Какое LSP )))
Адепты ООП свою методичку так и не дочитали...
Я могу написать прогу, пользуясь только позиксовой докой (ну или стандартом крестов/сишки). И она должна работать на всех системах, что заявили себя как позикс (поддерживают стандарт крестов/сишки).
Могу ли я написать прогу, пользуясь только спекой на JDBC и не поглядывая в вендорские доки? Ну ок, параметры подключения можно подсмотреть или их юзер снаружи передаст.
Этого, разумеется, не хватит для продакшена, но хотя бы то, что одинаково, будет выглядеть одинаково.
Но это на порядок проще чем учить driver-specific api.
По крайней мере не создаёт иллюзию обобщённости.
датабейз агностицизма никто не обещает в здравом уме
Entity Framework gives developers the ability to be abstracted from the underlying relational database management system and allows them to talk to a database using familiar LINQ-based syntax.
Entity Framework therefore simplifies the development process and greatly aids in improving productivity while working with a database. Entity Framework does so via a model that serves as a database abstraction. However, this technology is not database agnostic. As a result, if an application needs to be compatible with multiple databases, you have two choices. You could have multiple models, thus duplicating your efforts with each supported RDBMS (Relational Database Management System). Alternatively, you can use single model by deploying a technique that allows you to switch database support during deployment based on your target database.
так ты пишешь на LINQ, а не на SQL.
> this technology is database agnostic.
Дай угадаю.
List of supported databases:
* Microsoft SQL Server 2012
* Microsoft SQL Server 2016
* Microsoft SQL Server 2019
https://rashadkokash.me/framework-agnostic-app/
Но конечно ничто не мешает тебе придумать высокоуровневый API, и генерить код для конкретных баз.
Так работают Hibernate, EF, Django ORM, Alchemy, рельсы, и вот то, что пишет Кокаш.
Во всех этих решениях ты не пишешь на голом SQL, а выражаешь мысли в более высокоуровневых терминах, которые затем переводятся на SQL.
Не бывает кросс-процессорного асемблера, но бывает компилятор из си
так и тут
Говнокод #27481 — Куча
24 июн. 2021 г. — ava MAPTbIwKA 28.06.2021 18:19 # 0. говно-и-палочки, то тут, то там что-то чуток подкрутили пыхокал такой пыхокал.
https://www.php.net/manual/ru/book.ds.php
какой Борхес :)) А есть метод "отсериализовать в Томл и послать по телеграму коллеге"?
Зачем в скриптоговне развели такую пафсоную хуйиту?
нахуя нужен
https://www.php.net/manual/ru/ds-sequence.capacity.php
?
Серьезно
https://www.php.net/manual/ru/ds-sequence.allocate.php
??
А может, алокаторы кастомные завести, чтобы арены делать?
Опять на джавушка двадцатиелтней давности посмотрел, и решил таким же стать?
напихал строк и давай их суммировать
Типа '2pituh' + '3kurochka' будет 5, но с ворнингом.
Настоящий пыхопетух поставит собачку или выключит вывод ворнингов.
https://www.php.net/manual/ru/class.arrayobject.php
но кроме этого s you know ArrayObject is not an array so you can't use the built in array functions
То-есть долбоёбы реально высрали три сущности для одново и тово же, и всё равно оборсаолись
>ArrayObject::natsort — Сортировать массив, используя алгоритм "natural order"
сука это реально метод интерфейса у них?
То-есть они не осилили даже алгоритмы от структур отпилить, как в С++ 40 лет назал сделали?
А вот прекрасное
https://www.php.net/manual/ru/arrayobject.setflags.php
Прямо именно такого API и ждешь от высокоуровневово скриптоговна
jit jit po verevochke bejit
https://news.ycombinator.com/item?id=40216531