2 / 2 / 0
Регистрация: 04.07.2020
Сообщений: 109

PDO where

11.02.2022, 17:35. Показов 490. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно сделать выборку из БД где id>94
все время 94 показывается
PHP
1
2
3
4
5
6
7
$id = 94;
 
$response=$adapter->fetchRow(
        'records', ['id'], $whereMore=['id'=>$id]
        
    );  
    print_r($response);
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
33
34
public function fetchRow(
        string $table,
        array $columns = [],
        array $whereAnd = [],
        array $whereOr = [],
        array $whereMore = [],
        array $whereLike = [],
        array $orderBy = [],
        string $orderType = null
    ): array {
foreach ($whereMore as $key => $val) :
                if ($val == 'IS NOT NULL' or $val == 'IS NULL') :
                    $cond   .=  " WHERE " . $key . " " . $val;
                else :
                    $cond   .=  " WHERE " . $key . " < :a" . $s;
                    $params['a' . $s] = $val;
                    $s++;
                endif;
            endforeach;
 
            foreach ($whereOr as $key => $val) :
                $cond   .=  " OR " . $key . " = :a" . $s;
                $params['a' . $s] = $val;
                $s++;
            endforeach;
$stmt = $this->pdo->prepare('SELECT ' . $column . ' FROM ' . $table . ' WHERE 1=1 ' . $cond);
            $stmt->execute($params);
            return $stmt->fetch();
        } catch (PDOException $e) {
            die(Exception::debug($e));
        } catch (Exception $e) {
            die(Exception::debug($e));
        }
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.02.2022, 17:35
Ответы с готовыми решениями:

Phpstorm PHP7.3: undefined class Exception, \Exception, PDO, \PDO . etc
Вчера обновил Phpstorm через ихний toolbox, версия 2020.2.3 В старом, полностью рабочем коде начали сыпаться предупреждения от Шторма...

Странность с PDO
сделал небольшой проектик с приминением PDO на старом хостинге всё работало. Перенёс на новый - перестало. Тоесть к примерю скриптик: ...

Синтаксис PDO
Здравствуйте! Не встречал такого никогда: читаю один подготовленный запрос и в нём перечисляются именованные (примерно указал) параметры...

5
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
11.02.2022, 18:52
PHP
1
$response = $adapter->fetchRow('records', ['id'], whereMore: ['id'=>$id]);
0
2 / 2 / 0
Регистрация: 04.07.2020
Сообщений: 109
11.02.2022, 21:47  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
$response = $adapter->fetchRow('records', ['id'], whereMore: ['id'=>$id]);
так будет ошибка
Uncaught Error: Unknown named parameter $whereMore in /var/www/html/confirmation.php:22 Stack trace: #0 {main} thrown in /var/www/html/confirmation.php on line 22
обязательно должно быть
PHP
1
$whereMore=['id'=>$id])
и я не пониаю как сделать чтобы WHERE можно было задать БОЛЬШЕ и МЕНЬШЕ
0
9 / 7 / 4
Регистрация: 29.12.2013
Сообщений: 111
12.02.2022, 12:32
Отвечает в данном случае код:
PHP
1
2
3
4
5
6
7
$id = 94;
 
$response=$adapter->fetchRow(
        'records', ['id'], $whereLess=['id'=>$id]
        
    );  
    print_r($response);
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
33
34
35
36
37
38
39
40
41
42
public function fetchRow(
        string $table,
        array $columns = [],
        array $whereAnd = [],
        array $whereOr = [],
        array $whereMore = [],
        array $whereLike = [],
        array $orderBy = [],
        string $orderType = null
    ): array {
    foreach ($whereMore as $key => $val) :
                if ($val == 'IS NOT NULL' or $val == 'IS NULL') :
                    $cond   .=  " WHERE " . $key . " " . $val;
                else :
                    $cond   .=  " WHERE " . $key . " < :a" . $s;
                    $params['a' . $s] = $val;
                    $s++;
                endif;
            endforeach;
    foreach ($whereLess as $key => $val) :
                if ($val == 'IS NOT NULL' or $val == 'IS NULL') :
                    $cond   .=  " WHERE " . $key . " " . $val;
                else :
                    $cond   .=  " WHERE " . $key . " > :a" . $s;
                    $params['a' . $s] = $val;
                    $s++;
                endif;
            endforeach;
            foreach ($whereOr as $key => $val) :
                $cond   .=  " OR " . $key . " = :a" . $s;
                $params['a' . $s] = $val;
                $s++;
            endforeach;
$stmt = $this->pdo->prepare('SELECT ' . $column . ' FROM ' . $table . ' WHERE 1=1 ' . $cond);
            $stmt->execute($params);
            return $stmt->fetch();
        } catch (PDOException $e) {
            die(Exception::debug($e));
        } catch (Exception $e) {
            die(Exception::debug($e));
        }
    }
1
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
12.02.2022, 13:02
Цитата Сообщение от Vitos Посмотреть сообщение
обязательно должно быть
https://www.php.net/manual/ru/... -arguments
0
2 / 2 / 0
Регистрация: 04.07.2020
Сообщений: 109
12.02.2022, 16:20  [ТС]
Цитата Сообщение от Garsio Посмотреть сообщение
Отвечает в данном случае код:
все равно 94 показывает
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
public function fetchRow(
        string $table,
        array $columns = [],
        array $whereAnd = [],
        array $whereMore = [],
        array $whereLess = [],
        array $whereOr = [],
        array $whereLike = [],
        array $orderBy = [],
        string $orderType = null
    ): array {
 
        try {
            $cond = null;
            $s = 1;
            $params = [];
            $column = '*';
 
            if (count($columns) > 0) :
                $column =  implode(',', $columns);
            endif;
 
            foreach ($whereAnd as $key => $val) :
                if ($val == 'IS NOT NULL' or $val == 'IS NULL') :
                    $cond   .=  " AND " . $key . " " . $val;
                else :
                    $cond   .=  " AND " . $key . " = :a" . $s;
                    $params['a' . $s] = $val;
                    $s++;
                endif;
            endforeach;
 
            foreach ($whereOr as $key => $val) :
                $cond   .=  " OR " . $key . " = :a" . $s;
                $params['a' . $s] = $val;
                $s++;
            endforeach;
 
            foreach ($whereLike as $key => $val) :
                $cond   .=  " OR " . $key . " LIKE '% :a" . $s . "%'";
                $params['a' . $s] = $val;
                $s++;
            endforeach;
            
            foreach ($whereMore as $key => $val) :
                if ($val == 'IS NOT NULL' or $val == 'IS NULL') :
                    $cond   .=  " WHERE " . $key . " " . $val;
                else :
                    $cond   .=  " WHERE " . $key . " < :a" . $s;
                    $params['a' . $s] = $val;
                    $s++;
                endif;
            endforeach;
            
            foreach ($whereLess as $key => $val) :
                if ($val == 'IS NOT NULL' or $val == 'IS NULL') :
                    $cond   .=  " WHERE " . $key . " " . $val;
                else :
                    $cond   .=  " WHERE " . $key . " > :a" . $s;
                    $params['a' . $s] = $val;
                    $s++;
                endif;
            endforeach;
 
            if (count($orderBy) > 0) :
                $orderType = (empty($orderType)) ? "ASC" : $orderType;
                $cond   .=  " ORDER BY " . implode(",", $orderBy) . " " . $orderType;
            endif;
 
            $stmt = $this->pdo->prepare('SELECT ' . $column . ' FROM ' . $table . ' WHERE 1=1 ' . $cond);
            $stmt->execute($params);
            return $stmt->fetch();
        } catch (PDOException $e) {
            die(Exception::debug($e));
        } catch (Exception $e) {
            die(Exception::debug($e));
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.02.2022, 16:20
Помогаю со студенческими работами здесь

библиотека PDO
хочу вывести все записи отсортированные по столбцу. function get_all(){ $sql = 'SELECT * FROM '.$this-&gt;table.' ORDER...

Ошибка с PDO
Ребят, в чем дело? Ошибку выдаёт вот такую - Uncaught exception 'PDOException' with message 'invalid data source name' in...

Безопасность с pdo
дает ли использование пдо подготовленных выражений защиту от sql иньекций и xss? так же дает ли использование mod rewrite защиту от атак...

Pdo ошибка
Подскажите пожалуйста... Говорит что пользователь существует, но в базе пусто &lt;div class=&quot;form__wrapper&quot;&gt; ...

PDO авторизация
Понимаю что выглядит нагловато но как сделать авторизацию при помощи PDO. Т.е я подключился к $db = new PDO(), затем из формы берется...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru