|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
|||||||||||||||||||||||||||||||
Что лучше PDO или же mysqli?11.06.2019, 05:05. Показов 5327. Ответов 52
Метки нет (Все метки)
Подскажите, пожалуйста, какой способ лучше использовать для работы с базой данных mysqli или pdo? Я написала несколько примеров. Добавление, удаление и редактирование комментариев.
======================================== ============= mysqli ======================================== ============= index.php
PDO ======================================== =================== index.php
0
|
|||||||||||||||||||||||||||||||
| 11.06.2019, 05:05 | |
|
Ответы с готовыми решениями:
52
С чего начать: mysqli или PDO? Использовать MySQLi или PDO для POST запроса Подскажите, как правильно работать с PDO / mysqli или Call to a member function query() on a non-object |
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
|
| 15.06.2019, 20:00 [ТС] | |
|
И что они дают все функции с префиксом pg? Я могу отправлять любые запросы например mysql, mysqli, pdo?
0
|
|
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
|
|
| 15.06.2019, 20:02 | |
|
дают более качественную работу с БД в целом
и там нет всего этого mysql/PDO зоопарка и прочих косяков только один нюанс... это PostgreSQL
0
|
|
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
|||||||||||
| 16.06.2019, 03:46 [ТС] | |||||||||||
|
Что то я не могу понять как работает fetchColumn у PDO. Прописываю вот так
Если разместить перед fetchColumn, то всё выводится мне нужно сделать как mysql_num_rows, чтобы через условия проверялись есть ли записи if(mysql_num_rows>0), а потом выводились данные. Как это можно сделать на PDO?
0
|
|||||||||||
|
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
|
|
| 16.06.2019, 10:39 | |
|
fetchColumn сдвигает курсор, т.е. следующий fetch будет идти начиная уже со второй записи.
Можно получить сразу многомерный массив через fetchAll и с помощью функции count() узнать количество строк. Либо можно сразу запустить $sth->fetch в цикле и когда он вернёт null - значит строк больше нет.
0
|
|
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
|||||||||||
| 16.06.2019, 15:08 [ТС] | |||||||||||
|
Пытаюсь сформировать массив запроса, чтобы потом можно было с лёгкость добавлять данные прописываю только функцию, но почему-то вместо title='Статья' и author='admin', добавляется title='admin' и author='admin', т.е. в два поля добавляется admin.
Извините за беспокойство, надо было массив в execute() указать вот так.
0
|
|||||||||||
|
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
|
||||||
| 16.06.2019, 15:16 | ||||||
|
Katerina1993, кроме именованных плейсхолдеров, есть еще и неименованные. Во многих случаях, особенно если вы делаете предварительную фильтрацию данных, их хватает с головой.
Добавлено через 6 минут Тут главное порядок соблюдать: позиция элемента в массиве (его порядковый номер) соответствовать порядковому номеру плейсхолдера в строке запроса.
0
|
||||||
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
||||||
| 16.06.2019, 17:38 [ТС] | ||||||
|
неименованные - т.е. это без ":name", просто вопросительный знак ?
Вот рабочий пример:
0
|
||||||
|
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
|
|||||||
| 16.06.2019, 18:01 | |||||||
|
P.S. Немного измененный ваш код функции (просто, как вариант).
0
|
|||||||
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
||||||
| 17.06.2019, 10:10 [ТС] | ||||||
|
Lazy_Den, код получился короче чем у меня, я тут ещё написала select, таким же образом. Как можно пропустить функцию выборки через цикл, чтобы вывести несколько записей, но саму функцию трогать нельзя я её буду использовать для выборки одной записи например автора, статьи, даты и т.д?
0
|
||||||
|
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
|
|||||||
| 17.06.2019, 12:22 | |||||||
|
Katerina1993, ох... куда-то вас заносит не в ту степь. Я уже говорил выше, что это совсем не та универсальность, за которую сто́ит бороться. Завтра (образно) у вас уже появиться проект, где даже INSERT не будет столь однозначным: в каких-то случаях внезапно нужно будет выполнить
INSERT IGNORE ..., в каких-то INSERT ... ON DUPLICATE KEY UPDATE и т.д. А что уж говорить о SELECT, где вариаций, что звёзд на небе? Может вы сами того не зная, но уже используете ООП, ведь PDO - это класс. Так может быть вам лучше и двигаться в этом направлении?
0
|
|||||||
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
|
| 17.06.2019, 17:09 [ТС] | |
|
А в каких случаях могут пригодится сложные запросы? Просто у меня самый сложный запрос был это объединение двух таблиц при отправке сообщения в личку пользователя. Нужно было извлечь данные из таблицы account и данные из таблицы message, объединить их, а потом записать в общую таблицу с нужными параметрами получателя и отправителя.
0
|
|
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
|
| 18.06.2019, 11:44 [ТС] | |
|
Выше написали, что старый вариант mysql не поддерживают placeholders и я подумала для чего вообще нужны плэйсхолдеры. Я почитала несколько статей на habr'e и php.net, и узнала что плэйсхолдеры защищают от sql инъекции, теперь не нужно искать аналог mysql_real_escape_string для pdo. И если в поисковики прописать "как защититься от sql инъекции php mysql", то старого варианта уже не будет все топовые статьи про placeholders.
0
|
|
|
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
|
|
| 18.06.2019, 11:45 | |
|
Katerina1993, да именно так. Плейсхолдеры неплохая защита от sql инъекций.
0
|
|
|
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
|
|||
| 18.06.2019, 11:54 | |||
|
0
|
|||
| 18.06.2019, 11:54 | |
|
0
|
|
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
||
| 18.06.2019, 13:52 [ТС] | ||
|
Какое совпадение я только, что закончила читать статью на habr'e и там было написано про quote. Они нужны только в том случае если я не использую prepared statements.
Добавлено через 9 минут Lazy_Den, ваш ответ я сначала не заметила и поэтому ответила последнему посту.
0
|
||
|
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
|
|||||||
| 18.06.2019, 14:14 | |||||||
false. В то время, как при очистке, функция просто уберет всё лишнее, что числом не является. Пример очень грубый и примитивный, но мне главное было донести до вас суть. А дальше читайте документацию.
0
|
|||||||
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
|||||||
| 19.06.2019, 16:52 [ТС] | |||||||
Пример:
0
|
|||||||
|
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
|
||
| 19.06.2019, 17:04 | ||
|
там часто без materialized view (а точнее агрегации) никак в некоторых формах может быть по 50-100 полей, там запросы по 1-2-3 экрана
0
|
||
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
||||||
| 27.06.2019, 21:29 [ТС] | ||||||
|
Решила опять вернуться к этой теме я искала инфу в сети как использовать подготовленные операторы, просто выше мне написали, что для хорошей защиты нужно применять фильтры данных filter_var () и вот в интернете нашла вот такой вопрос одного пользователя "Использование подготовленных операторов PDO и filter_var" https://stackoverflow.com/ques... filter-var и ему ответили "использование filter_var () не требуется, поскольку bindParam с флагом PDO::PARAM_INT будет выполнять ту же работу" и я думаю, что лучше записать вот так.
0
|
||||||
| 27.06.2019, 21:29 | |
|
На что лучше всего заменить MYSQLi ? MySqli или PDO ?
PDO и MySQLi
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|