db query php class

database query’s from class object with php

Can I still do query’s from within an object like this:

by passing the global dbconnection variable $dbc to the constructor

or is there a better way?

Or creating a singleton class for the databaseconnection, but I see a lot off negativity that people are writing about it.

I am new to making objects, so I don’t know if I mayby have to do it all a little different, with the db I mean.

5 Answers 5

If you looking for database abstraction, why not consider using the DB classes provided by Zend Framework.

They also include a way to set an adapter as the default, making it a snap to perform operations.

Add to that the fact that Zend_Db defaults to using parameterised queries instead of old fashioned quoted ones, thus adding security and peace of mind.

using globals is pretty much a bad idea, its far too easy to accidentally overwrite one! along with all the other reasons you will find for not using them with a quick google.

Making a db connection with Zend Framework is a snap,

It really is as simple as that. you can then either make your table classes to provide quick access to individual tables, or use the select and statement objects for more advanced joined querys.

Also, with Zend Framework, you do not have to use the whole stack, you can simply use just the DB components if you like.

If you don’t want to use Zend Framework for this, I would strongly recommend you consider alternatives such as an ORM like Doctrine over writing your own DB abstraction. you will end up with a monster very quickly, and an ORM or Zend Framework have a great many developers squashing bugs, and even more reporting any that are there.

Источник

Super-fast PHP MySQL Database Class

Updated on March 5, 2020 by David Adams

db query php class

This lightweight database class is written with PHP and uses the MySQLi extension, it uses prepared statements to properly secure your queries, no need to worry about SQL injection attacks.

The MySQLi extension has built-in prepared statements that you can work with, this will prevent SQL injection and prevent your database from being exposed, some developers are confused on how to use these methods correctly so I’ve created this easy to use database class that’ll do the work for you.

This database class is beginner-friendly and easy to implement, with the native MySQLi methods you need to write 3-7 lines of code to retrieve data from a database, with this class you can do it with just 1-2 lines of code, and is much easier to understand.

Source

Create a new file and name it db.php and add:

How To Use

Connect to MySQL database:

Fetch a record from a database:

Fetch multiple records from a database:

You can specify a callback if you do not want the results being stored in an array (useful for large amounts of data):

If you need to break the loop you can add:

Get the number of rows:

Get the affected number of rows:

Get the total number of queries:

Get the last insert ID:

Close the database:

Conclusion

The database class uses the MySQLi extension, this is built into PHP version >= 5.0.0. If you’re using PHP version 5.0.0 to 5.3.0 you’ll need install: mysqlnd.

You’re free to use this database class in your projects.

Released under the MIT License.

About Author

db query php class

David Adams

Enthusiastic website developer, I’ve been designing and developing web applications for over 10 years, I enjoy the creativity I put into my projects and enjoy what others bring to the awesome web. My goal is to help newcomers learn the ways of the web.

Источник

Небольшой класс для работы с БД ( PDO )

Внимание! Моё мнение может отличаться от вашего, поэтому хочу сразу сказать, что эта статья не есть истина в последней инстанции и реализация этого класса зависит от программиста и его предпочтений.

Вступление

Начнём с класса DB.

Тут, я думаю, всё понятно, эти вещи можно не объяснять.

Далее большая часть пояснений будет содержаться в коде.

Прекрасно, мы подключились к БД. Теперь нам нужно создать метод, который позволит совершать SQL запросы.

Реализация метода query

Мы готовы к реализации этого метода, но у нас возникает вопрос:

«Что за параметры он принимает и как он должен их использовать?»

Ответ на первый вопрос очевиден:

А что со вторым вопросом?

Всё так же просто, что бы ответить на этот вопрос, мы должны узнать, в каком виде нам подают эти параметры. А получаем мы их вот такими:

Вернёмся к предыдущему вопросу и ответим на него:

Но сначала, мы должны подготовить запрос для подстановки этих значений. В итоге код будет выглядеть так:

Некоторые комментарии немного искажают истину, но при этом кардинально ничего не меняют

Мы имеем уже довольно мощный инструмент, использующий подготовленные запросы и требующий от разработчиков знание SQL, а не тонкостей класса. Но при этом, я бы зашил в этот класс типовые запросы, такие как:

Моя реализация

Эти методы могут быть реализованы по разному, но я представлю свою реализацию.

Здесь эти методы реализованы, возможно не лучшим образом, но реализованы.

Так же сюда можно добавить ещё функции, упрощающие жизнь, но лично мне этого с головой хватает.

Можно добавить следующие методы:

Применение

Мы написали наш класс. Теперь нам нужно протестировать его в реальном «бою».

Давайте попробуем. Для начала нам нужно создать любую таблицу в БД, допустим это будет таблица posts. Добавим туда пару записей и попробуем вывести их с помощью нашего класса.

Это понятно и не требует объяснения, идём дальше. Теперь, давайте попросим БД test вернуть нам значение всех постов при помощи нашего класса.

На выходе мы имеем следующее:

Отлично, а теперь давайте выведем только первый пост.

Прекрасно. Ну и в конце добавим запись и выведем данные до и после.

После

Мы получили то, что хотели и убедились в том, что этот класс рабочий.

В заключении

Ссылка на github: class DB

Источник

Класс для работы с базой данных

db query php class

Привожу свой прокомментированный класс для работы с базой данных:

mysqli = new mysqli(«localhost», «root», «», «my_db»);
$this->mysqli->query(«SET lc_time_names = ‘ru_RU'»);
$this->mysqli->query(«SET NAMES ‘utf8′»);
>

Как видите, нет ничего лишнего, только всё самое необходимое. Теперь разберём PHP-код, который использует данный класс:

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

db query php class

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Комментарии ( 21 ):

Интересный метод getQuery(), напоминает параметризованные запросы prepare(), bind_param(). Как по вашему, стоит ли заморачиваться с ними или для безопасности вполне хватит вашего подхода для подстановки значений в запрос?

Лично я их не использую и особого смысла не вижу.

Михаил, возникла проблема. Все методы работают кроме select и selectRow. Не знаю в чем проблема, никаких ошибок не выводит но и то, что нужно тоже 🙁 Я в отчаянии.

Скорее всего, ошибка в Вашем запросе. Используйте этот метод для поиска ошибок: http://myrusakov.ru/php-finderror.html и для поиска ошибки в SQL: http://myrusakov.ru/sql-finderror.html

Он Array и должен возвращать. Это же массив данных.

Михаил, спасибо БОЛЬШОЕ Вам за это курс, подскажите, пожалуста, нет ли в отправке формы в БД каких-либо особенностей при отправке значений радиокнопок? У меня есть форма отзыва о компании, в которой есть 2 текстовых поля и 2 поля с радиокнопками. Значения полей с текстом в БД попадает, а выбранное значение радиокнопок-нет. просто пустая ячейка. Хотя через echo на странице оно выводиться?

Никаких особенностей нет, надо просто искать ошибку: http://myrusakov.ru/php-finderror.html

Спасибо за класс, удобно. Прошу показать пример работы с insert и update

Мне больше вот этот нравится, не знаю, дает он 100% защиту от sql инъекция, но хотя бы какая то. http://habrahabr.ru/post/165069/

Дякую за посилання.. дуже зручно і безпечно.

Не получается подключиться к базе данных. Куда класть этот файл класса БД?

В папку положите корневую.

Сделал! Сделал! Оказывается в файле класса БД не надо было прописывать данные БД (логин пароль и пр.)!

Добавить этот весь код надо в один файл? У меня database_class.php

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.

Источник

H Удобный php класс для работы с MySQL в черновиках Из песочницы

В последнее время задался вопросом написания php класса для работы с базой данных mysql. Мои требования – удобство формирования запроса к базе данных и возможность сортировки и записи данных через массив, что упрощает работу с БД.

В результате появился вот такой класс:

Вот такой класс, а теперь подробнее о функциях.

Для подключения к базе данных (БД) объявляем класс Db и с помощью функции connect подключаемся к БД. Значения для функции: connect(Хост, Имя пользователя, пароль, имя базы данных);

После подключения можно приступать к работе. Для сортировки с помощью массива объявляю массив, а для записи данных использую функцию where, в которую передаю массив:

Далее функцию where опишу подробнее. А сейчас объявим из каких полей делать выборку, для этого используем функцію select, по умолчанию ее значение — * и ее можно не объявлять.

По умолчанию where использует знак = для сравнения, но если нужно другое значение, например больше или меньше то можно вторым значением передать нужный нам знак сравнения. В функции можно использовать как строчный вариант сравнения, например ‘price,1000’, так и массив как в примере выше и всему массиву будет подставлен переданный знак.

Для сортировки значений внутри выборки используем функцию order_by, для нее также формируем массив:

Эта функция сформирует такой запрос: ORDER BY price DESC, data ASC. В ORDER BY можно подставлять свои аргументы используя функцию order_by_text():

Теперь функции вывода данных — их три: num_rows, multiline, lines:

Функция num_rows показывает количество записей, соответствующих запросу, false — означает, что объявленные данные для сортировки стирать не нужно. Без false все объявленные данные стираются и их нужно объявлять заново. ‘data’ – таблица в БД к которой делаем запрос.

Функция multiline выводит массивы данных соответствующих запросу.

Функция lines выводит один первый массив соответствующий запросу.

Функции формируют такой запрос:
SELECT msg,zag FROM data WHERE status=’1′ AND category=’2′ AND price>’1000′ ORDER BY price DESC, data ASC, id DESC

Функция limit — устанавливает LIMIT в запрос, где 2 — стартовый номер для вывода (т.е. вывод начнется со 2-го элемента соответствующего запросу), 4 — количество элементов в массиве.

Select, where и order_by объявляем заново, т.к. предыдущая функция lines была без false — это означает, что все данные для сортировки были стерты. Формирует такой запрос:

SELECT id FROM data WHERE status=’1′ AND category=’2′ AND id IN (1,2,3,4) ORDER BY price DESC, data ASC LIMIT 2,4

Здесь была использована еще одна функция where_text – она нужна для того, чтобы самому написать запрос в WHERE

Формирует такой запрос: SELECT * FROM data WHERE MATCH(test,text) AGAINST(‘+тест +поиска’ IN BOOLEAN MODE). Ищем в таблице data, в полях test и text совпадения со словами тест и поиска.

SELECT id FROM data WHERE status=’1′ AND category=’2′ AND MATCH(test,text) AGAINST(‘+тест +поиска’ IN BOOLEAN MODE) ORDER BY price DESC, data ASC

Для записи в базу данных: используем функцию set — передача параметров сохранения массивом и insert — запись в базу данных:

Для внесения изменений в строку используем функцию update:

UPDATE data SET test=’test’, text=’text’, category=’2′, test=’test change’, text=’text change’ WHERE

И еще одна функция query — в ней можно написать свой запрос select полностью:

Также можно сделать параллельное соединение с другой базой данных:

Такой вот класс у меня получился. Не буду сравнивать его с другими класcами для работы с БД, знаю — их множество. Публикую его, т.к. думаю, что, может, кому-то пригодится, а также хочется конструктивной критики, которая позволит улучить этот код.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *