Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448

Наследование подключения PDO

30.01.2015, 16:00. Показов 2543. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
try{
$dbh = new PDO("mysql:host=localhost;dbname=Fraerov", 'root', '');
 
function func(){
  $dbh= $this->$dbh;
  $sth = $dbh->query('Select * From `Users`');
  while($row = $sth->fetch())
  {
    print_r($row);
  }
}
 
func();
}
 
catch (PDOException $e)
{
    echo '<br>'.$e->getMessage();
}
Я заметил, что объект $dbh не наследуется, и чтобы функция работала - нужно в ней создать новое подключение к БД. Вот попытался "унаследовать" данное подключение, но выбивает ошибку " Using $this when not in object context". Есть какое-то более грамотное использование PDO в функциях, или обязательно каждый раз создавать новое подключение?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.01.2015, 16:00
Ответы с готовыми решениями:

Проверка подключения PDO
Здравствуйте, мне нужно проверить подключение к бд. Использую PDO try{ $db=new PDO...

Конфиг. подключения для PDO
Приветствую! Решил перейти на PDO. До этого использовал mysql_, и использовал файл конфигурации для подключения к БД. То есть специальный...

Ошибка подключения к СУБД MySQL PDO
Здравствуйте. Установлен Open Server, на нём PHP 7.2 и MySQL 5.7. Имя базы данных test, хост, логин и парроль по умолчанию. При...

9
Заблокирован
30.01.2015, 20:35
Цитата Сообщение от triadec_96 Посмотреть сообщение
Я заметил, что объект $dbh не наследуется
объект не может наследоваться. Наследоваться может класс.
Цитата Сообщение от triadec_96 Посмотреть сообщение
Using $this when not in object context
скорее всего, вы в статическом методе класса, пытаетесь вызвать метод объекта. Объект - это экземпляр класса. Там работает $this. В статическом контексте(когда не создается объект) используйте self:: или static::

Добавлено через 1 минуту
А PDO используйте как есть. Не стоит пытаться наследовать..
1
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
01.02.2015, 19:28  [ТС]
Цитата Сообщение от root Посмотреть сообщение
А PDO используйте как есть. Не стоит пытаться наследовать.
Значит всё-таки лучше создавать новое подключение в функции?
0
Заблокирован
01.02.2015, 20:53
Цитата Сообщение от triadec_96 Посмотреть сообщение
Значит всё-таки лучше создавать новое подключение в функции?
соединение с базой данных кешируется. Можете создавать новое соединение прямо в функции. Не уверен что это будет правильно с точки зрения классического программирования, скажем в си, но пхп парадоксальный язык, он позволяет делать такие вещи. Новое подключение к базе не будет создаваться. Будет использоваться кешированный объект предыдущего соединения, которое где-то в коде было уже до этого создано. Вопреки "правильности"
1
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
01.02.2015, 22:01
Будет использоваться кешированный объект предыдущего соединения, которое где-то в коде было уже до этого создано. Вопреки "правильности"
Да ты что?
Кто же тебе его и куда закешировал. Не неси полную чушь. Класс для работы с базами данных каждый должен написать для себя и понимать как он работает. Внести туда свой сахар и расширить класс для получения плюшек.
Прежде всего надо понимать, что это одиночка
0
Заблокирован
01.02.2015, 22:10
Цитата Сообщение от Poznakomlus Посмотреть сообщение
Да ты что?
Кто же тебе его и куда закешировал. Не неси полную чушь.
резкие высказывания вам простительны, в силу вашего незнания материала. Я конечно, виноват, что забыл указать, то что соединение должно быть постоянным.. Не все упомнишь, когда нужно быстро написать. четвертый параметр конструктора PDO : array(PDO::ATTR_PERSISTENT => true), впрочем опыта читать мануаль вам не занимать

Добавлено через 1 минуту
http://php.net/manual/ru/pdo.connections.php
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
01.02.2015, 22:22
Я конечно, виноват, что забыл указать, то что соединение должно быть
Приведи зачем єто делать. Какая от єтого польза держать соединение постоянно открытым
Если ты внимательно читал мой пост то должен был заметить о расширении класса
Так вот постоянно соединение гле используется а? Для чего?
Кроме того, что это не нужная нагрузка, так ты еще не сможешь расширить класс под свои нужды.
А выиграешь что миллисекунды на подключение.
Не учи новичков говнокодить.
Да читать мануалы полезно, но еще лучше понимать без них как все крутится
0
Заблокирован
01.02.2015, 22:30
Цитата Сообщение от Poznakomlus Посмотреть сообщение
Не учи новичков говнокодить.
никого не учу. Просто предлагаю варианты. Все мы были новичками, потом это проходит. У вас это еще впереди
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
01.02.2015, 22:36
У вас это еще впереди
че писькомерки устроил?
0
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
02.02.2015, 02:13  [ТС]
Цитата Сообщение от root Посмотреть сообщение
Не уверен что это будет правильно с точки зрения классического программирования, скажем в си, но пхп парадоксальный язык
Ахах, так и есть. Просто до пхп три года работал на С и эта проблема с подключением к БД меня потрясла.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.02.2015, 02:13
Помогаю со студенческими работами здесь

PDO (родительский), как подавить ошибку подключения
function __construct( ... ){ try{ $attrs = array(PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_SILENT); parent::__construct(... ,...

Настройка сетевого подключения по умолчанию в rashbian для подключения к сети интернет
Всем здравствуйте! На orange PI zero поднял ОС rashbian с необходимым ПО. Всё работает как надо. Но есть проблемка! Нужно...

Какое нужно оборудование для подключения вай фай, а также каковы условия самого подключения
Прошу прощения за столь глупый вопрос, но я в этом деле полный нуб, а где ещё можно спросить больше не знаю. Дело вот в чём. У меня...

Наследование шаблоном шаблона (наследование конструктора)
Всем привет! Думаю, что эта тема хоть и касается общих вопросов программирования, но будет уместна в данном разделе т.к. у различных...

Заменить наследование классов на наследование интерфейсов
#include &lt;iostream&gt; #include &lt;assert.h&gt; using namespace std; int people_on_base = 100; int vehicles_on_base = 100; double...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru