Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
87 / 22 / 7
Регистрация: 23.09.2012
Сообщений: 671

Можно так делать?

29.10.2014, 16:54. Показов 685. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кто знает кто нет, я только начал изучать ООП. Так вот...
index.php:
PHP
1
2
3
4
5
6
7
8
9
include("class.php");
$db = new Database();
$db->connect();
 
$db->select('guestbook','*','id=1',null);
$res = $db->getResult();
echo "<pre>";
print_r($res);
echo "</pre>";
Сам класс:
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
class Database
{
 
 
    private $db_host = 'localhost';             //  хост
    private $db_user = 'root';                           //  имя пользователя
    private $db_pass = '';                           //  пароль
    private $db_name = 'class';                         //  база данных
 
    private $con = false;            
    private $result0 = array();      
 
 
    public function connect()
    {
        if(!$this->con)
        {
            $myconn = @mysql_connect($this->db_host,$this->db_user,$this->db_pass);
            if($myconn)
            {
                $seldb = @mysql_select_db($this->db_name,$myconn);
                if($seldb)
                {
                    $this->con = true;
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }
        else
        {
            return true;
        }
    }
 
 
    public function setDatabase($name)
    {
        if($this->con)
        {
            if(@mysql_close())
            {
                $this->con = false;
                $this->results0 = null;
                $this->db_name = $name;
                $this->connect();
            }
        }
 
    }
 
    public function select($table,$rows,$where,$order)
    {
        $q = 'SELECT '.$rows.' FROM '.$table;
        if($where != null)
            $q .= ' WHERE '.$where;
        if($order != null)
            $q .= ' ORDER BY '.$order;
 
        $query = @mysql_query($q);
        if($query)
        {
            $this->numResults = mysql_num_rows($query);
            for($i = 0; $i < $this->numResults; $i++)
            {
                $r = mysql_fetch_array($query);
                $key = array_keys($r);
                for($x = 0; $x < count($key); $x++)
                {
            
                    if(!is_int($key[$x]))
                    {
                        if(mysql_num_rows($query) > 1)
                            $this->result0[$i][$key[$x]] = $r[$key[$x]];
                        else if(mysql_num_rows($query) < 1)
                            $this->result0 = null;
                        else
                            $this->result0[$key[$x]] = $r[$key[$x]];
                    }
                }
            }
            return true;
        }
        else
        {
            return false;
        }
    }
   public function getResult()
    {
        return $this->result0;
    }
}
Этот код работает, и я знаю как он работает, так вот вопрос такой можно ли в метод select засунуть проверку введенных данных? Или это признак гавнокода? Если нет, нельзя скажите как можно? нужно?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.10.2014, 16:54
Ответы с готовыми решениями:

Метод Post, так вообще делать можно?
Это вообще законно делать так?))) $r1 = $_POST ; $r2 = $_POST; $r3 = $_POST; $r4 = $_POST ; $r5 = $_POST ; $start_date...

Можно ли так делать ?
Я пока что начинающий, поэтому хочу спросить, можно ли так делать ? #include&lt;iostream&gt; #include&lt;cstdlib&gt; using...

Можно ли так делать
Можно ли так делать, карманов нет под ссд

6
Native x86
Эксперт Hardware
 Аватар для quwy
6856 / 3789 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
29.10.2014, 17:01
Цитата Сообщение от delphi-sly Посмотреть сообщение
можно ли в метод select засунуть проверку введенных данных?
Я вижу, что в select() приходят уже синтаксически оформленные для SQL фрагменты запроса. Чтобы что-то там проверить, нужно парсить выражения. Придет вам в $where что-то типа такого:
SQL
1
usersrights.users_ID(+) = 85681 AND usersrights.deftype_id(+) IS NULL AND usersrights.defwork_id(+) = 70109 AND usersrights.defitem_id(+)  = defItem.counter AND usersrights.deffield_id(+) IS NULL AND defItem.Form_ID = 70109 AND defItem.VISIBLE <> 4 AND (DefItem.Module_id IS NULL OR ','||REPLACE(DefItem.Module_id, ' ', '')||',' NOT LIKE '%,5,%') AND (DefItem.Module_id2 IS NULL OR ','||REPLACE(DefItem.Module_id2, ' ', '')||',' LIKE '%,5,%') AND (DefItem.WORK_ID IS NULL OR ','||REPLACE(DefItem.WORK_ID, ' ', '')||',' LIKE '%,70109,%') AND ((40 = 0) OR defItem.PartVisible IS NULL OR ','||REPLACE(defItem.PartVisible, ' ', '')||',' LIKE '%,40,%')
что будете с этим делать?

Проверять данные нужно максимально близко к их источнику, в идеале -- при обработке массивов $_GET и $_POST, а не после того, как из них уже выражения составлены.
0
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
29.10.2014, 17:45
Возьми лучше PDO и используй подготовленные запросы

Добавлено через 36 секунд
Тем более mysql драйвер скоро отживет себя совсем
0
87 / 22 / 7
Регистрация: 23.09.2012
Сообщений: 671
29.10.2014, 18:29  [ТС]
Цитата Сообщение от Dolphin Посмотреть сообщение
Возьми лучше PDO и используй подготовленные запросы
А нету готового примера? Чтобы скачал подключил и изучаешь?
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
29.10.2014, 19:24
Цитата Сообщение от delphi-sly Посмотреть сообщение
@mysql_query($q);
"собака" в коде признак говнокода. mysql_* функции - признак говнокода. Не задевает, то что пых уже несколько лет истирит на тему, что эти функции устарели и их поддержка будет прекращена в будущем? включите наконец-то вывод ошибок. Или думаете говнокодеры выйдут на демонстрацию и не позволят отключить эти функции?
Цитата Сообщение от delphi-sly Посмотреть сообщение
А нету готового примера
купите книгу, поможет
ЗЫ
кстати все замечания не относятся к ооп, если кто заметил.. ТС просто застрял в изучении php лет так на 10 назад
0
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
29.10.2014, 19:33
Вот http://php.net/manual/ru/book.pdo.php
Все готовое. Осталось создать объект класса и вперед
0
30.10.2014, 10:59

Не по теме:

delphi-sly, я не понимаю, почему для изучения ООП сразу делают класс для работы с БД...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.10.2014, 10:59
Помогаю со студенческими работами здесь

Можно ли так делать?
Народ можно ли совмещать id и class в одном теге как тут &lt;audio id=&quot;au&quot; class=&quot;music&quot; src=&quot;1.mp3&quot;&gt;&lt;/audio&gt; просто я делаю так а оно не...

Можно ли делать так...
Здравствуйте друзья. Использую СУБД Access. Есть таблица ip_address там хранятся ip адреса которые я програмно пингую и другая...

Можно ли делать так сайты?
http://users9.jabry.com/onegaonline

Можно ли делать так if (i++ < 100) {;} ?
Это счётчик тиков в обработчике прерывания по переполнению аппаратного счётчика. Красиво, кратко, компилятор молчит, но что-то не...

Можно ли так делать (два сервера)?
При нажатии на одну кнопку хочу запустить два сервера. Можно ли так делать? server = new Server(port, this); server1 = new...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru