За последние 24 часа нас посетили 16636 программистов и 1651 робот. Сейчас ищет 1371 программист ...

Работа с базой из функций

Тема в разделе "PHP и базы данных", создана пользователем Den1s, 23 авг 2008.

  1. Den1s

    Den1s Активный пользователь

    С нами с:
    10 авг 2008
    Сообщения:
    19
    Симпатии:
    0
    Адрес:
    Siberia
    Дело такое: хочу написать отдельные функции для определенных операций для работы с базой (запись, чтение, апдейт и тп), как сделать так, чтобы подключение к базе было видно функциям, а то не создавать же в каждой функции новое подключение. Если не затруднит, покажите пожалуста на каком-нить простеньком примере. Очень надо, а то процедурами уже скрипт разросся, нужно функции осваивать.

    и еще.. использую PHP4, PDO не юзаю.
     
  2. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    $c = mysql_connect();

    function my_f()
    {
    global $c;
    }
     
  3. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    Используйте ООП:
    PHP:
    1. <?
    2. class myDb {
    3.    private $handle;
    4.    function __construct() {
    5.       // соединение с базой
    6.       // $this->handle = ...
    7.    }
    8.  
    9.  
    10.    function insert($table, $rows) {
    11.       // вставка столбца
    12.       return $id;
    13.    }
    14.  
    15.  
    16.   // ...
    17. }
    18.  
    19. $db = new myDb;
    20. $id = $db->insert('myTable', array('a'=>123));
    21. $db->update('myTable', array('a'=>123));
    22. $db->deleteById('myTable', $id);
    23.  
     
  4. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Когда вызываешь mysql_query(). можно опускать второй аргумент, и тогда будет использоваться текущее соединение.
     
  5. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    К ООП. Если вы хотите что бы соединение происходило при первом использовании то вам подойдет паттерн singleton:
    PHP:
    1. <?
    2. class myDb {
    3.    static private $instance;
    4.    static function getInstance() {
    5.        if (!self::$instance) self::$instance = new self;
    6.        return return self::$instance;
    7.    }
    8.  
    9.  
    10.    private $handle;
    11.    function __construct() {
    12.    // ...
    13. }
    14.  
    15.  
    16. // теперь, в любом месте:
    17. myDb::getInstance()->insert('...');
    18. myDb::getInstance()->update('...');
    19. myDb::getInstance()->delete('...');
    20. // или
    21. $db = myDb::getInstance();
    22. $db->insert('...');
    23. $db->update('...');
    24. $db->delete('...');
    25.  
     
  6. Den1s

    Den1s Активный пользователь

    С нами с:
    10 авг 2008
    Сообщения:
    19
    Симпатии:
    0
    Адрес:
    Siberia
    Вот, как мне заставить работать это..

    Код (Text):
    1. $db = mysql_connect("localhost","admin","pass");
    2. mysql_select_db("my_base", $db);
    3.  
    4. function view_cont(){
    5.     $row = mysql_query ("SELECT * FROM table", $db);
    6.     $arrow = mysql_fetch_array($row);
    7.     do {
    8.     echo "$arrow[id]";
    9.     } while ($arrow = mysql_fetch_array($row));
    10. }
    11.  
    12. view_cont();
    так же функции update_cont() и тп. чтобы подключение было общее. Вышеописанное я что-то недогоняю, опыта совсем нет. Или хотя бы скажите как все это называется, погуглю, а то не могу правильно сформировать поисковый запрос, или подскажите что почитать..
     
  7. Anonymous

    Anonymous Guest

  8. Den1s

    Den1s Активный пользователь

    С нами с:
    10 авг 2008
    Сообщения:
    19
    Симпатии:
    0
    Адрес:
    Siberia
    Да это то я первым делом смотрел, но думаю что решение то наверно больше кроется в PHP все таки.
     
  9. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Ку-ку!
     
  10. Den1s

    Den1s Активный пользователь

    С нами с:
    10 авг 2008
    Сообщения:
    19
    Симпатии:
    0
    Адрес:
    Siberia
    Браво! Работает.. неужели все так просто, или есть какие то минусы у этого способа. Но факт что работает.
     
  11. Anonymous

    Anonymous Guest

    Минусы случаются... если вдруг тебе захочется подключится к двум базам одновременно )
     
  12. Anonymous

    Anonymous Guest

    А вообще, то что ты пытаешься сделать, зовется ORM и ActiveRecord ))))
     
  13. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Table Data Gateway для начала хватит.