|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
|||||||||||||||||||||||||||||||
Что лучше PDO или же mysqli?11.06.2019, 05:05. Показов 5309. Ответов 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
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
|
Теория всего 6. Судьба неотвратима?
anaschu 21.07.2026
Математическое доказательство Судьбы: Точка бифуркации в едином тензорном ядре Модели ВсегоСвежее обновление питоновского ядра «Soil Chemistry 2. 0» дало нам неопровержимое математическое. . .
|
Теория всего 5. ядро Теории Всего: Математический изоморфизм репликаторов и иллюзия свободы воли
anaschu 21.07.2026
Единое ядро Теории Всего: Математический изоморфизм репликаторов и иллюзия свободы воли
Главная задача «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы» (аттракторов. . .
|
сукцессия 37. Внедрил дипсик в свой оркестр из ИИ. У него закончилось пространство чата, потому опубликую выводы из его работы здесь
anaschu 21.07.2026
====================================================================
КОНТЕКСТ: Моделирование микоризной сукцессии (AM → ECM)
====================================================================
. . .
|
|
сукцессия 36. Делаю прогоны модели около порога бифуркации (превращения эндо микоризы в экто микоризу)
anaschu 21.07.2026
СУКЦЕССИЯ МИКОРИЗ: КАК МАТЕМАТИКА ОБЪЯСНЯЕТ ПОДЗЕМНУЮ ВОЙНУ
Мы привыкли думать, что лес — это деревья. А грибы — это то, что мы собираем в корзинку осенью. Но если заглянуть под землю, окажется,. . .
|
ИИ и человечность
kumehtar 21.07.2026
Забавно, что общаясь с ИИ, я замечаю, насколько он высказывается умно, и насколько верит в людей. Он умеет прощать. Он знает как отвечать не обесценивая опыт других людей, даже если сам не верит. Он. . .
|
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного.
1. Почему показания термометра заряжены целью?
Цель заложена в самом. . .
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|