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

PDO where

11.02.2022, 17:35. Показов 473. Ответов 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
Ответ Создать тему
Новые блоги и статьи
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru