Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Заблокирован

Выбор к какой функции делать обращение

23.09.2024, 20:05. Показов 519. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    class bb
    {
 
        public $db_id;
    
        function __construct() {
        
            $this->db_id = new PDO('mysql:dbname=table;host=localhost', 'user', 'pass', [PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"]);
            $this->db_id->errorInfo() && $this->display_error($this->db_id->errorInfo(), $this->sql);
    
        }
    
        function query($sql, $value, $type = 'fetchAll')
        {
                        $this->sql = $sql;
            $this->db_id->prepare($sql);
            $this->db_id->execute($value);
            return $this->db_id->fetchAll(PDO::FETCH_ASSOC);
        }
 
        function display_error($error, $sql = '')
        {
            print_r($sql);
            print_r($error);
 
        }
    
        function __destruct() {
                //Как закрыть соединение?
        }
        
    }

PHP
1
$type = 'fetchAll'
PHP
1
$this->db_id->fetchAll(PDO::FETCH_ASSOC);
Если передаем содержит строчку 'fetch', должно сработать как

PHP
1
$this->db_id->fetch(PDO::FETCH_ASSOC);
Как так подставить?

Код не рабочий, пока...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.09.2024, 20:05
Ответы с готовыми решениями:

Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2, используя обращение к функции
Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2, используя обращение к функции. f=arctgx+ln^2 x^2 Нужно...

Найти среднее арифметическое значений функции f(x) в точках a, b, (a+b)/2 используя обращение к функции
А этой нету: 3.Найти среднее арифметическое значений функции f(x) в точках a, b, (a+b)/2 используя обращение к функции f=(x*sin⁡...

Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2, используя обращение к функции
Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2, используя обращение к функции. ...

3
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,814
23.09.2024, 23:53
Dmit199, Так что ли?

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    function query($sql, $value, $type = 'fetchAll')
    {
        $stmt = $this->db_id->prepare($sql);
        $stmt->execute($value);
 
        if ($type == 'fetchAll') {
            return $stmt->fetchAll(PDO::FETCH_ASSOC);
        }
 
        if ($type === 'fetch') {
            return $stmt->fetch(PDO::FETCH_ASSOC);
        }
        
        throw new Exception('Unknown fetch type');
    }
Только fetchAll возвращает массив записей, а fetch только одну.

Чтоб не прописывать везде PDO::FETCH_ASSOS можете установить этот параметр по умолчанию.

PHP
1
2
3
4
5
6
7
8
    function __construct()
    {
        $this->db_id = new PDO('mysql:dbname=table;host=localhost', 'user', 'pass', [
            PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'",
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
        ]);
    }
Ну и поставить, чтоб в случае ошибки выкидывалось исключение. Тогда не нужно будет каждый раз проверять успешно ли прошел запрос.
0
Заблокирован
24.09.2024, 00:52  [ТС]
Чтобы работало это
PHP
1
$this->db_id->errorInfo()
Необходимо установить это?
PHP
1
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION

Не совсем то с условиями, это понятно. Как то иначе прописать?
Как то так
PHP
1
2
$stmt->$type(PDO::FETCH_ASSOC);
$stmt->$type();
??

Не понимаю, для чего это

PHP
1
throw new Exception('Unknown fetch type');
Возможно я не правильно делаю

PHP
1
$this->db_id->errorInfo() && $this->display_error($this->db_id->errorInfo(), $this->sql);
Но если так как у вас, тоже самое. На случай ошибки в запросе, как мне выполнить обращение к функции, так?

PHP
1
throw new Exception($this->display_error($this->db_id->errorInfo(), $this->sql));
или так?


PHP
1
2
throw new Exception(e);
             $this->display_error(e, $this->sql)
Блин, хз...
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,814
24.09.2024, 02:00
Цитата Сообщение от Dmit199 Посмотреть сообщение
Не понимаю, для чего это
На случай если $type передадут некорректный.

Цитата Сообщение от Dmit199 Посмотреть сообщение
а случай ошибки в запросе, как мне выполнить обращение к функции, так?
Если поставить ERRMODE_EXCEPTION, то в случае ошибки PDO сам будет выкидывать исключение, не нужно вызывать никакой метод.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.09.2024, 02:00
Помогаю со студенческими работами здесь

Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2, используя обращение к функции. f =
Здравствуйте. помогите пожалуйста рншить задачку в Turbo C++ .Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2,...

Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2, используя обращение к функции
здраствуйте знатаки!! помогите пожалуйсто решить задачу.Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2,...

Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2, используя обращение к функции
Помогите срочно, хотя бы перевести формулу на язык С++

Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2, используя обращение к функции
Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2, используя обращение к функции. ...

Найти среднее арифметическое значений функции f(x) в точках а, b, (a+b)/2, используя обращение к функции
f=((e^x+e^(-x))/2)*lg()2*x) Добавлено через 3 часа 7 минут что реально никто не может помочь?


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru